Advertisement
Guest User

Untitled

a guest
Jul 8th, 2018
99
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 23.56 KB | None | 0 0
  1. package sample.controller;
  2.  
  3. import javafx.application.Platform;
  4. import javafx.beans.value.ObservableValue;
  5. import javafx.collections.FXCollections;
  6. import javafx.collections.ObservableList;
  7. import javafx.fxml.FXML;
  8. import javafx.fxml.FXMLLoader;
  9. import javafx.fxml.Initializable;
  10. import javafx.print.PageOrientation;
  11. import javafx.print.Paper;
  12. import javafx.print.Printer;
  13. import javafx.print.PrinterJob;
  14. import javafx.scene.Parent;
  15. import javafx.scene.Scene;
  16. import javafx.scene.control.Alert;
  17. import javafx.scene.control.Alert.AlertType;
  18. import javafx.scene.control.Button;
  19. import javafx.scene.control.ButtonType;
  20. import javafx.scene.control.ComboBox;
  21. import javafx.scene.control.TableColumn;
  22. import javafx.scene.control.TableView;
  23. import javafx.scene.control.cell.PropertyValueFactory;
  24. import javafx.stage.FileChooser;
  25. import javafx.stage.Stage;
  26. import javafx.stage.StageStyle;
  27. import javafx.stage.Window;
  28. import net.sf.jasperreports.engine.JRException;
  29. //import net.sf.jasperreports.engine.JRException;
  30. //import net.sf.jasperreports.engine.JasperRunManager;
  31. import net.sf.jasperreports.engine.JasperRunManager;
  32.  
  33. import org.codehaus.jackson.JsonFactory;
  34. import org.codehaus.jackson.JsonParser;
  35. import org.codehaus.jackson.JsonToken;
  36. import sample.BackStack;
  37. import sample.Main;
  38. import sample.connection.Connector;
  39. import sample.model.*;
  40. import sample.model.Currency;
  41.  
  42. import java.awt.Desktop;
  43. import java.io.File;
  44. import java.io.FileNotFoundException;
  45. import java.io.FileOutputStream;
  46. import java.io.IOException;
  47. import java.io.InputStream;
  48. import java.io.OutputStream;
  49. import java.net.URL;
  50. import java.net.URLDecoder;
  51. import java.sql.*;
  52. import java.text.DecimalFormat;
  53. import java.util.*;
  54.  
  55. /**
  56. * Autor Filip
  57. */
  58. public class CalculationsController implements Initializable {
  59.  
  60. @FXML
  61. public TableView<Calculation> tvCalculation;
  62. @FXML
  63. public ComboBox cbCurrency;
  64. @FXML
  65. Button btnPrintData;
  66.  
  67. private ObservableList<String> currencyList;
  68. private ObservableList<Calculation> calculationList;
  69. private ObservableList<CurrencyRates> ratesList;
  70. static List<Country> countryList;
  71. private Connection connection;
  72. private Statement statement;
  73. private ResultSet set;
  74. private ObservableList<CalculationHelper> helperList;
  75. Window owner;
  76.  
  77. @Override
  78. public void initialize(URL location, ResourceBundle resources) {
  79.  
  80. try {
  81. ratesList = fetchCurrencyListValue();
  82. setTable();
  83.  
  84. setValuesForTable();
  85. fetchCountrys();
  86.  
  87. } catch (IOException e) {
  88. e.printStackTrace();
  89. } catch (SQLException e) {
  90. // TODO Auto-generated catch block
  91. e.printStackTrace();
  92. }
  93.  
  94. }
  95.  
  96. public CalculationsController() throws SQLException {
  97. currencyList = FXCollections.observableArrayList();
  98. calculationList = FXCollections.observableArrayList();
  99. ratesList = FXCollections.observableArrayList();
  100. connection = Connector.getConnection();
  101. helperList = FXCollections.observableArrayList();
  102. countryList = new ArrayList<>();
  103. statement = connection.createStatement();
  104.  
  105. }
  106.  
  107. /**
  108. * Povlacenje kursne liste pomocu API-a Narodne Banke Srbije
  109. *
  110. * @return kursna lista
  111. * @throws IOException
  112. */
  113. public ObservableList<CurrencyRates> fetchCurrencyListValue() throws IOException {
  114. ObservableList<CurrencyRates> list = FXCollections.observableArrayList();
  115.  
  116. String url = "https://kurs.resenje.org/api/v1/rates/today";
  117.  
  118. JsonFactory f = new JsonFactory();
  119. JsonParser jp = f.createJsonParser(new URL(url));
  120.  
  121. JsonToken token = jp.nextToken();
  122.  
  123. while (token != jp.nextToken().START_ARRAY) {
  124. token = jp.nextToken();
  125.  
  126. }
  127.  
  128. while (token != JsonToken.END_ARRAY) {
  129. token = jp.nextToken();
  130. if (token == JsonToken.START_OBJECT) {
  131. CurrencyRates currencyRates = parseRates(jp);
  132. list.add(currencyRates);
  133. }
  134. }
  135.  
  136. int x = 0;
  137. for (CurrencyRates currencyRates : list) {
  138. System.out.println(x++);
  139. System.out.println("Valuta: " + currencyRates.getCode() + " Dnevni srednji kurs: "
  140. + currencyRates.getExchange_middle());
  141. }
  142. return list;
  143. }
  144.  
  145. /**
  146. * Vraca jedan objetak Valute (ime, kurs pre dinaru)
  147. *
  148. * @param jp
  149. * @return
  150. * @throws IOException
  151. */
  152. public CurrencyRates parseRates(JsonParser jp) throws IOException {
  153.  
  154. CurrencyRates currencyRates = new CurrencyRates();
  155. JsonToken token = jp.nextToken();
  156.  
  157. while (token != JsonToken.END_OBJECT) {
  158. if (token == JsonToken.END_OBJECT) {
  159. while (token != JsonToken.END_OBJECT) {
  160. token = jp.nextToken();
  161. }
  162. }
  163. if (token == JsonToken.FIELD_NAME) {
  164. String currentName = jp.getCurrentName();
  165.  
  166. if ("code".equals(currentName)) {
  167. jp.nextToken();
  168. currencyRates.setCode(jp.getText());
  169. }
  170. if ("exchange_middle".equals(currentName)) {
  171. jp.nextToken();
  172. currencyRates.setExchange_middle(jp.getDoubleValue());
  173. }
  174. }
  175. token = jp.nextToken();
  176. }
  177. return currencyRates;
  178. }
  179.  
  180. /**
  181. * Setovanje kolona tabele
  182. */
  183. public void setTable() {
  184.  
  185. TableColumn nameCol = new TableColumn(" ");
  186. nameCol.setMinWidth(100);
  187. nameCol.setCellValueFactory(new PropertyValueFactory<Costs, String>("name"));
  188. nameCol.setSortable(false);
  189.  
  190. TableColumn valueCol = new TableColumn("Iznos");
  191. valueCol.setMinWidth(100);
  192. valueCol.setCellValueFactory(new PropertyValueFactory<Costs, String>("value"));
  193. valueCol.setSortable(false);
  194.  
  195. TableColumn currencyCol = new TableColumn("Valuta");
  196. currencyCol.setMinWidth(100);
  197. currencyCol.setCellValueFactory(new PropertyValueFactory<Costs, String>("currency"));
  198. currencyCol.setSortable(false);
  199.  
  200. TableColumn rateCol = new TableColumn("Kurs ");
  201. rateCol.setMinWidth(100);
  202. rateCol.setCellValueFactory(new PropertyValueFactory<Costs, String>("rate"));
  203. rateCol.setSortable(false);
  204.  
  205. TableColumn valueRDSCol = new TableColumn("Dinarska vrednost");
  206. valueRDSCol.setMinWidth(150);
  207. valueRDSCol.setCellValueFactory(new PropertyValueFactory<Costs, String>("valueRDS"));
  208. valueRDSCol.setSortable(false);
  209.  
  210. tvCalculation.getColumns().addAll(nameCol, valueCol, currencyCol, rateCol, valueRDSCol);
  211. // setValuesForTable("EUR");
  212.  
  213. }
  214.  
  215. /**
  216. * Na osnovu troskova, unetih akontacije vrsi se racunanje i prikazivanje
  217. * dobijenih vrednosti u tabelu Kada korisnik odabere iz padajuceg menija valutu
  218. * u tabeli se prikazuju svi troskovi, akontacije za tu valutu
  219. *
  220. * @param
  221. */
  222. public void setValuesForTable() {
  223. calculationList.clear();
  224.  
  225. List<String> currencys = new ArrayList<>();
  226. for (Currency currency : AdvancePaymentController.currencieList) {
  227. currencys.add(currency.getNameCurrency());
  228. }
  229.  
  230. ObservableList<Costs> costsList = TravelCostsController.costsObservableList;
  231. ObservableList<AdvensedPayments> list = AdvancePaymentController.advensedPaymentsObservableList;
  232.  
  233. Collections.sort(costsList, new Costs.SortByCostName());
  234. for (AdvensedPayments advensedPayments : list) {
  235. double rate = returnRate(advensedPayments.getCurrencyName());
  236. Calculation calculation = new Calculation("Akontacija", advensedPayments.getValue(),
  237. advensedPayments.getCurrencyName(), rate,
  238. Double.parseDouble(new DecimalFormat(".##").format(rate * advensedPayments.getValue())));
  239. calculationList.add(calculation);
  240. if (checkFinalCurrencyCalculation(advensedPayments.getCurrencyName())) {
  241. CalculationHelper helper = new CalculationHelper(advensedPayments.getCurrencyName(),
  242. advensedPayments.getValue(), 0);
  243. helperList.add(helper);
  244. } else {
  245. for (CalculationHelper calculationHelper : helperList) {
  246. if (calculationHelper.getCurrencyName().equals(advensedPayments.getCurrencyName())) {
  247. calculationHelper.setTotalAdvencedPayment(
  248. calculationHelper.getTotalAdvencedPayment() + advensedPayments.getValue());
  249. }
  250. }
  251. }
  252. }
  253.  
  254. //
  255. for (Costs costs : costsList) {
  256. double rate = returnRate(costs.getCurrency());
  257. Calculation calculation = new Calculation(costs.getCostTypeName(), costs.getCostValue(),
  258. costs.getCurrency(), rate,
  259. Double.parseDouble(new DecimalFormat(".##").format(rate * costs.getCostValue())));
  260. calculationList.add(calculation);
  261.  
  262. if (!currencys.contains(costs.getCurrency())) {
  263. if (checkFinalCurrencyCalculation("EUR")) {
  264. CalculationHelper calculationHelper = new CalculationHelper("EUR", 0,
  265. Double.parseDouble(new DecimalFormat(".##").format(
  266. costs.getCostValue() / (returnRate("EUR") / returnRate(costs.getCurrency())))));
  267. helperList.add(calculationHelper);
  268. } else {
  269. for (CalculationHelper calculationHelper : helperList) {
  270. if (calculationHelper.getCurrencyName().equals("EUR")) {
  271. calculationHelper.setTotalCosts(calculationHelper.getTotalCosts()
  272. + costs.getCostValue() / (returnRate("EUR") / returnRate(costs.getCurrency())));
  273. }
  274. }
  275. }
  276. } else {
  277. System.out.println("STVARNO NEMA LOGIKE: " + costs.getCurrency() + " " + costs.getCostValue());
  278. if (checkFinalCurrencyCalculation(costs.getCurrency())) {
  279. CalculationHelper helper = new CalculationHelper(costs.getCurrency(), 0, costs.getCostValue());
  280. helperList.add(helper);
  281. } else {
  282. for (CalculationHelper calculationHelper : helperList) {
  283. if (calculationHelper.getCurrencyName().equals(costs.getCurrency())) {
  284. calculationHelper.setTotalCosts(calculationHelper.getTotalCosts() + costs.getCostValue());
  285. }
  286. }
  287. }
  288. }
  289. }
  290.  
  291. // public Calculation(String name, double value, String currency, double rate,
  292. // double valueRDS) {
  293. for (CalculationHelper calculationHelper : helperList) {
  294. double rate = returnRate(calculationHelper.getCurrencyName());
  295. Calculation calculation = new Calculation("Ukupan trosak",
  296. Double.parseDouble(new DecimalFormat(".##").format(calculationHelper.getTotalCosts())),
  297. calculationHelper.getCurrencyName(), rate,
  298. Double.parseDouble(new DecimalFormat(".##").format(rate * calculationHelper.getTotalCosts())));
  299. calculationList.add(calculation);
  300. if (calculationHelper.getTotalCosts() > calculationHelper.getTotalAdvencedPayment()) {
  301. Calculation calculation1 = new Calculation("Isplata zaposlenom",
  302. Double.parseDouble(new DecimalFormat(".##").format(
  303. calculationHelper.getTotalCosts() - calculationHelper.getTotalAdvencedPayment())),
  304. calculationHelper.getCurrencyName(), rate,
  305. Double.parseDouble(new DecimalFormat(".##").format(rate
  306. * (calculationHelper.getTotalCosts() - calculationHelper.getTotalAdvencedPayment()))));
  307. calculationList.add(calculation1);
  308. }
  309. if (calculationHelper.getTotalAdvencedPayment() > calculationHelper.getTotalCosts()) {
  310. Calculation calculation1 = new Calculation("Isplata firmi",
  311. Double.parseDouble(new DecimalFormat(".##").format(
  312. calculationHelper.getTotalAdvencedPayment() - calculationHelper.getTotalCosts())),
  313. calculationHelper.getCurrencyName(), rate,
  314. Double.parseDouble(new DecimalFormat(".##").format(rate
  315. * (calculationHelper.getTotalAdvencedPayment() - calculationHelper.getTotalCosts()))));
  316. calculationList.add(calculation1);
  317. }
  318. // System.out.println(calculationHelper.getCurrencyName()+"
  319. // "+calculationHelper.getTotalAdvencedPayment()+"
  320. // "+calculationHelper.getTotalCosts());
  321. }
  322.  
  323. tvCalculation.setItems(calculationList);
  324.  
  325. }
  326.  
  327. /**
  328. * Cuvanje puta, putSvake, akontacija i troskova u bazi podataka
  329. *
  330. * @throws SQLException
  331. * // * @throws JRException
  332. * @throws IOException
  333. * @throws JRException
  334. */
  335. public byte[] saveToDataBase() throws SQLException /* JRException */, IOException, JRException {
  336. Travel travel = UserController.travel;
  337.  
  338. // query.append("SELECT * FROM Korisnici where
  339. // username='").append(tfUsername.getText()).append("' ").append(
  340. // "and ").append("password='").append(tfPassword.getText()).append("'");
  341.  
  342. StringBuilder query = new StringBuilder();
  343.  
  344. query.append("INSERT INTO `Putevi` (`korisnik_id`, `datum_polaska`, `vreme_polaska`, "
  345. + "`datum_povratka`, `vreme_povratka`, `datum_granica_povratak`, "
  346. + "`vreme_granica_povratak`) VALUES (").append("'1'").append(",'").append(travel.getGoingDate())
  347. .append("','").append(travel.getGoingTime()).append("','").append(travel.getBackDate()).append("','")
  348. .append(travel.getBackTime()).append("','").append(travel.getBackBorderDate()).append("','")
  349. .append(travel.getBackBorderTime()).append("')");
  350.  
  351. System.out.println(query.toString());
  352.  
  353. int number = 0;
  354.  
  355. PreparedStatement preparedStatement = connection.prepareStatement(String.valueOf(query),
  356. Statement.RETURN_GENERATED_KEYS);
  357. preparedStatement.executeLargeUpdate();
  358.  
  359. ResultSet resultSet = preparedStatement.getGeneratedKeys();
  360.  
  361. while (resultSet.next()) {
  362. number = resultSet.getInt(1);
  363. }
  364.  
  365. for (AdvensedPayments advensedPayments : AdvancePaymentController.advensedPaymentsObservableList) {
  366. int currencyId = 1;
  367. for (Currency currency : AdvancePaymentController.currencieList) {
  368. if (advensedPayments.getCurrencyName().equals(currency.getNameCurrency())) {
  369. currencyId = currency.getIdCurrency();
  370. }
  371. }
  372. preparedStatement = connection.prepareStatement(
  373. "INSERT INTO `Akontacije` (`put_id`, `vatula_id`, `iznos`, akontacijaKurs, DinarskaVrednost) VALUES (?, ?, ?, ?, ?)");
  374. preparedStatement.setInt(1, number);
  375. preparedStatement.setInt(2, currencyId);
  376. preparedStatement.setDouble(3, advensedPayments.getValue());
  377. preparedStatement.setDouble(4, returnRate(advensedPayments.getCurrencyName()));
  378. preparedStatement.setDouble(5,
  379. returnRate(advensedPayments.getCurrencyName()) * advensedPayments.getValue());
  380. boolean ressult = preparedStatement.execute();
  381.  
  382. }
  383. ObservableList<TravelPart> list = UserController.travelParts;
  384.  
  385. for (TravelPart travelPart : list) {
  386. System.out.println(travelPart.getContryName());
  387. System.out.println(travelPart.getCheat());
  388. if (!travelPart.getCheat().equals("Prolazak")) {
  389. int idCountry = returnCounryId(travelPart.getContryName());
  390. int idStavke = 1;
  391.  
  392. preparedStatement = connection.prepareStatement(
  393. "INSERT INTO PuteviStavke (put_id, zemlja_id, datum_prelaska_granice, vreme_prelaska_granice, broj_sati, broj_dnevnica)"
  394. + " VALUES (?, ?, ?, ?, ?, ?)",
  395. Statement.RETURN_GENERATED_KEYS);
  396. preparedStatement.setInt(1, number);
  397. preparedStatement.setInt(2, idCountry);
  398. if (travelPart.getContryName().equals("Srbija")) {
  399. preparedStatement.setString(3, null);
  400. preparedStatement.setString(4, "");
  401. } else {
  402. preparedStatement.setString(3, travelPart.getBorderDate().toString());
  403. preparedStatement.setString(4, travelPart.getBorderTime());
  404. }
  405.  
  406. int numberHours = (int) travelPart.getNumHours();
  407. preparedStatement.setInt(5, numberHours);
  408. preparedStatement.setDouble(6, travelPart.getNumberDays());
  409.  
  410. preparedStatement.executeUpdate();
  411.  
  412. resultSet = preparedStatement.getGeneratedKeys();
  413.  
  414. if (resultSet.next()) {
  415. idStavke = resultSet.getInt(1);
  416. }
  417.  
  418. for (Costs costs : travelPart.getCostsList()) {
  419. System.out.println("ovo su troskovi: " + costs.getCostTypeName());
  420. int typeID = getCostsID(costs.getCostTypeName());
  421. double rate = returnRate(costs.getCurrency());
  422. preparedStatement = connection.prepareStatement(
  423. "INSERT INTO `TroskoviPutovanja` (`stavke_id`, `id_vrste`, `iznos`, `valuta`, `kurs`, `dinarska_protiv_vrednost`) "
  424. + "VALUES (?, ?, ?, ?, ?, ?)");
  425. preparedStatement.setInt(1, idStavke);
  426. preparedStatement.setInt(2, typeID);
  427. preparedStatement.setDouble(3, costs.getCostValue());
  428. preparedStatement.setString(4, costs.getCurrency());
  429. preparedStatement.setDouble(5, rate);
  430. preparedStatement.setDouble(6, rate * costs.getCostValue());
  431. preparedStatement.execute();
  432.  
  433. }
  434.  
  435. System.out.println(idStavke + "ovo je stavka");
  436. }
  437. }
  438.  
  439. for (CalculationHelper calculationHelper : helperList) {
  440. double rate = returnRate(calculationHelper.getCurrencyName());
  441. preparedStatement = connection.prepareStatement(
  442. "INSERT INTO `Obracun` (`put_id`, `obracunIme`, `iznos`, `valuta`, `kurs`, `dinarska_vrednost`) "
  443. + "VALUES (?, ? , ? , ? , ? , ? )");
  444.  
  445. preparedStatement.setInt(1, number);
  446. preparedStatement.setString(2, "Ukupan trosak");
  447. preparedStatement.setDouble(3, calculationHelper.getTotalCosts());
  448. preparedStatement.setString(4, calculationHelper.getCurrencyName());
  449. preparedStatement.setDouble(5, rate);
  450. preparedStatement.setDouble(6, rate * calculationHelper.getTotalCosts());
  451.  
  452. preparedStatement.execute();
  453.  
  454. if (calculationHelper.getTotalCosts() > calculationHelper.getTotalAdvencedPayment()) {
  455. preparedStatement = connection.prepareStatement(
  456. "INSERT INTO `Obracun` (`put_id`, `obracunIme`, `iznos`, `valuta`, `kurs`, `dinarska_vrednost`) "
  457. + "VALUES (?, ? , ? , ? , ? , ? )");
  458.  
  459. preparedStatement.setInt(1, number);
  460. preparedStatement.setString(2, "Isplata zaposlenom");
  461. preparedStatement.setDouble(3,
  462. calculationHelper.getTotalCosts() - calculationHelper.getTotalAdvencedPayment());
  463. preparedStatement.setString(4, calculationHelper.getCurrencyName());
  464. preparedStatement.setDouble(5, rate);
  465. preparedStatement.setDouble(6,
  466. rate * (calculationHelper.getTotalCosts() - calculationHelper.getTotalAdvencedPayment()));
  467.  
  468. preparedStatement.execute();
  469.  
  470. }
  471. if (calculationHelper.getTotalAdvencedPayment() > calculationHelper.getTotalCosts()) {
  472. preparedStatement = connection.prepareStatement(
  473. "INSERT INTO `Obracun` (`put_id`, `obracunIme`, `iznos`, `valuta`, `kurs`, `dinarska_vrednost`) "
  474. + "VALUES (?, ? , ? , ? , ? , ? )");
  475.  
  476. preparedStatement.setInt(1, number);
  477. preparedStatement.setString(2, "Isplata firmi");
  478. preparedStatement.setDouble(3,
  479. calculationHelper.getTotalAdvencedPayment() - calculationHelper.getTotalCosts());
  480. preparedStatement.setString(4, calculationHelper.getCurrencyName());
  481. preparedStatement.setDouble(5, rate);
  482. preparedStatement.setDouble(6,
  483. rate * (calculationHelper.getTotalAdvencedPayment() - calculationHelper.getTotalCosts()));
  484.  
  485. preparedStatement.execute();
  486.  
  487. }
  488.  
  489. }
  490.  
  491. return printReport(number);
  492. }
  493.  
  494. /**
  495. * Vraca idZemlje za unetu zemlju
  496. *
  497. * @param countryName
  498. * zemlja
  499. * @return
  500. * @throws SQLException
  501. */
  502. public int returnCounryId(String countryName) throws SQLException {
  503. for(Country country: countryList) {
  504. if(country.getName().equals(countryName)){
  505. return country.getCountry_id();
  506. }
  507. }
  508. return 0;
  509. }
  510.  
  511. /**
  512. * Vraca ID tipa troska na osnovu imena troska
  513. *
  514. * @param s
  515. * @return
  516. * @throws SQLException
  517. */
  518. public int getCostsID(String s) throws SQLException {
  519.  
  520. int id = 1;
  521. // SELECT * FROM `VrsteTroskova` WHERE VrsteTroskova.id_vrste = 1
  522. PreparedStatement ps = connection
  523. .prepareStatement("SELECT * FROM `VrsteTroskova` WHERE VrsteTroskova.naziv =(?)");
  524. ps.setString(1, s);
  525. ResultSet resultSet = ps.executeQuery();
  526.  
  527. while (resultSet.next()) {
  528. id = resultSet.getInt("id_vrste");
  529. }
  530. return id;
  531. }
  532.  
  533. public double returnRate(String s) {
  534. for (CurrencyRates currencyRates : ratesList) {
  535. if (currencyRates.getCode().equals(s)) {
  536. return currencyRates.getExchange_middle();
  537. }
  538. }
  539. return 0;
  540. }
  541.  
  542. public boolean checkFinalCurrencyCalculation(String s) {
  543. if (helperList.size() == 0) {
  544. return true;
  545. }
  546. for (CalculationHelper calculationHelper : helperList) {
  547. if (calculationHelper.getCurrencyName().equals(s)) {
  548. return false;
  549. }
  550. }
  551. return true;
  552. }
  553.  
  554. public void onBackPressed() {
  555. BackStack.pop();
  556. }
  557.  
  558. public byte[] printReport(int putID) throws JRException, IOException, SQLException {
  559.  
  560.  
  561. String path = Main.class.getProtectionDomain().getCodeSource().getLocation().getPath();
  562.  
  563. System.out.println(path+"/reports/Blank_A4.jasper");
  564.  
  565. // File reportFile = new File(path+"/reports/Blank_A4.jasper");
  566.  
  567. InputStream jasperIS = getClass().getResourceAsStream("/reports/Blank_A4.jasper");
  568. Map parameters = new HashMap();
  569. parameters.put("putID", putID + "");
  570.  
  571. byte[] bytes = JasperRunManager.runReportToPdf(jasperIS, parameters,
  572. Connector.getConnection());
  573.  
  574. // byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(),
  575. // parameters, conn);
  576.  
  577. OutputStream out = new FileOutputStream("izveštaj.pdf");
  578.  
  579. out.write(bytes);
  580. out.close();
  581.  
  582. return bytes;
  583.  
  584.  
  585. }
  586.  
  587. public void restartTravel() throws SQLException, IOException {
  588. BackStack.cleanBackStack();
  589. Parent parent = FXMLLoader.load(getClass().getResource("user.fxml"));
  590. Stage stage = new Stage(StageStyle.DECORATED);
  591. stage.setTitle("Obračun poslovnih puteva - Korisnički deo");
  592. stage.setScene(new Scene(parent));
  593. BackStack.push(stage);
  594. stage.show();
  595. }
  596.  
  597. public void saveReport(byte[] bytes) {
  598. System.out.println("JERI ULAZIS OVDEEEE");
  599. FileChooser fileChooser = new FileChooser();
  600. fileChooser.setTitle("Sacuvaj izvestaj na lokaciji:");
  601. fileChooser.setInitialFileName("izvestaj.pdf");
  602. FileChooser.ExtensionFilter pdfExtensionFilter = new FileChooser.ExtensionFilter(
  603. "PDF - Portable Document Format (.pdf)", "*.pdf");
  604. fileChooser.getExtensionFilters().add(pdfExtensionFilter);
  605. fileChooser.setSelectedExtensionFilter(pdfExtensionFilter);
  606. File file = fileChooser.showSaveDialog(BackStack.getLastStage());
  607. if (file != null) {
  608. try {
  609. writePdf(file, bytes);
  610. } catch (Exception e) {
  611. e.printStackTrace();
  612. }
  613. }
  614. }
  615.  
  616. public void writePdf(File file, byte[] bytes) throws IOException, SQLException {
  617.  
  618. String path = Main.class.getProtectionDomain().getCodeSource().getLocation().getPath();
  619.  
  620. System.out.println(path+"/reports/Blank_A4.jasper");
  621. OutputStream out = new FileOutputStream(file);
  622. out.write(bytes);
  623. out.close();
  624.  
  625. File brisi = new File("izveštaj.pdf");
  626. brisi.delete();
  627. restartTravel();
  628.  
  629. }
  630.  
  631. public void openDialog() throws SQLException, IOException, JRException {
  632. String path = Main.class.getProtectionDomain().getCodeSource().getLocation().getPath();
  633. String decodedPath = URLDecoder.decode(path, "UTF-8");
  634. Alert alert = new Alert(AlertType.INFORMATION);
  635. alert.setTitle("Odaberite opciju");
  636. alert.setHeaderText(null);
  637. alert.setContentText("Odaberite opciju");
  638.  
  639. ButtonType buttonTypeOne = new ButtonType("Novi izvestaj");
  640. ButtonType buttonTypeTwo = new ButtonType("Sacuvaj PDF");
  641. ButtonType buttonTypeThree = new ButtonType("Stampaj");
  642. ButtonType buttonTypeFour = new ButtonType("Izadji");
  643.  
  644. alert.getButtonTypes().setAll(buttonTypeOne, buttonTypeTwo, buttonTypeThree, buttonTypeFour);
  645.  
  646. Optional<ButtonType> result = alert.showAndWait();
  647.  
  648. if (result.get() == buttonTypeOne) {
  649.  
  650. restartTravel();
  651.  
  652. } else if (result.get() == buttonTypeTwo) {
  653. saveReport(saveToDataBase());
  654.  
  655. } else if(result.get() == buttonTypeThree) {
  656. saveToDataBase();
  657. if (Desktop.isDesktopSupported()) {
  658. try {
  659. File myFile = new File("izveštaj.pdf");
  660. Desktop.getDesktop().open(myFile);
  661. } catch (IOException ex) {
  662. System.out.println("Sta je ovo breeee: ");
  663. }
  664. }
  665. restartTravel();
  666. } else {
  667. Platform.exit();
  668. }
  669.  
  670. }
  671. public void fetchCountrys() throws SQLException {
  672.  
  673. String sql = "select * from Zemlje";
  674. set = statement.executeQuery(sql);
  675.  
  676. while (set.next()){
  677. Country country = new Country(set.getInt("zemlja_id"), set.getString("naziv"), set.getInt("dnevnica"));
  678. countryList.add(country);
  679.  
  680. }
  681.  
  682.  
  683. }
  684.  
  685. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement