Advertisement
Guest User

Untitled

a guest
Mar 6th, 2015
221
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.71 KB | None | 0 0
  1. package de.uniwue.jpp.logbook.io;
  2.  
  3. import java.io.IOException;
  4. import java.io.InputStream;
  5. import java.io.InputStreamReader;
  6. import java.io.LineNumberReader;
  7. import java.io.OutputStream;
  8. import java.io.PrintWriter;
  9. import java.text.DecimalFormat;
  10. import java.time.LocalDate;
  11. import java.time.format.DateTimeFormatter;
  12. import java.util.ArrayList;
  13. import java.util.Collection;
  14. import java.util.Iterator;
  15. import java.util.regex.Matcher;
  16. import java.util.regex.Pattern;
  17.  
  18. import de.uniwue.jpp.logbook.model.Car;
  19. import de.uniwue.jpp.logbook.model.Entry;
  20. import de.uniwue.jpp.logbook.model.FuelType;
  21. import de.uniwue.jpp.logbook.model.Logbook;
  22.  
  23. public class CsvImportExport implements ImportExport {
  24.  
  25. DecimalFormat f = new DecimalFormat("#0.00");
  26. DateTimeFormatter dformat = DateTimeFormatter.ofPattern("dd.MM.yyyy");
  27.  
  28. public void save(Logbook logbook, OutputStream out) throws IOException,
  29. NullPointerException {
  30. PrintWriter test = new PrintWriter(out);
  31. test.print("CAR;DATE;DISTANCE;PRICE;FUEL;COMMENT");
  32. if (logbook == null) {
  33. throw new NullPointerException("Logbook existiert nicht");
  34. } else {
  35.  
  36. boolean first = true;
  37. StringBuffer buf = new StringBuffer();
  38. Iterator<Car> itrc = logbook.getCars().iterator();
  39. while (itrc.hasNext()) {
  40. Car c = itrc.next();
  41. if (first == true) {
  42. buf.append("\n");
  43. }
  44. first = false;
  45. if (!(logbook.getEntries(c).isEmpty())) {
  46. Collection<Entry> entries = new ArrayList<Entry>();
  47. entries = logbook.getEntries(c);
  48. Iterator<Entry> itre = entries.iterator();
  49. while (itre.hasNext()) {
  50. Entry e = itre.next();
  51. if (!(itrc.hasNext()) && !(itre.hasNext())) {
  52. buf.append(c.toString() + ";"
  53. + dformat.format(e.getDate()) + ";"
  54. + f.format(e.getDistance()) + ";"
  55. + f.format(e.getPrice()) + ";"
  56. + f.format(e.getFuel()) + ";"
  57. + e.getComment());
  58. } else {
  59. buf.append(c.toString() + ";"
  60. + dformat.format(e.getDate()) + ";"
  61. + f.format(e.getDistance()) + ";"
  62. + f.format(e.getPrice()) + ";"
  63. + f.format(e.getFuel()) + ";"
  64. + e.getComment() + "\n");
  65. }
  66. }
  67. }
  68. }
  69. test.print(buf.toString());
  70. }
  71. out.close();
  72. test.close();
  73. }
  74.  
  75. @Override
  76. public Logbook load(InputStream is) throws IOException {
  77. Logbook logbook = new Logbook();
  78. InputStreamReader a = new InputStreamReader(is);
  79. LineNumberReader test = new LineNumberReader(a);
  80. String eingabe = test.readLine();
  81. if (is == null) {
  82. throw new IOException("Gueltiger Input noetig.");
  83. } else {
  84. if (eingabe == null
  85. || (eingabe.equals("CAR;DATE;DISTANCE;PRICE;FUEL;COMMENT")) == false) {
  86. throw new IOException("Header ist falsch bzw. leer");
  87. } else {
  88. while ((eingabe = test.readLine()) != null) {
  89.  
  90. // Pattern c = Pattern.compile("");
  91. // Matcher cm = c.matcher(eingabe);
  92. Pattern p = Pattern
  93. .compile("([^\\(\\)]+)\\[([^\\(\\)]+)\\];([0-9]{2}\\.[0-9]{2}\\.[0-9][0-9][0-9][0-9]);([0-9]+\\.[0-9][0-9]);([0-9]+\\.[0-9][0-9]);([0-9]+\\.[0-9][0-9]);([^\\(\\)]+)");
  94. // Pattern p = Pattern
  95. // .compile("\\d{2}}\\.\\d{2}\\.\\d{4}) (\\d+\\.\\d{2}\u20ac)), (\\d+\\.\\d{2})), (\\d+\\.\\d{2}k)), \\d+\\.\\d{2}\u20ac/km (\\([^\\(\\)]+\\))");
  96. Matcher m = p.matcher(eingabe);
  97. if (m.matches()) {
  98.  
  99. LocalDate date = LocalDate.parse(m.group(3));
  100. Double fuel = Double.parseDouble(m.group(5));
  101. Double distance = Double.parseDouble(m.group(6));
  102. Double price = Double.parseDouble(m.group(4));
  103. if (m.group(2).equals("DIESEL")) {
  104. Car auto = new Car(m.group(1), FuelType.Diesel);
  105. Entry blubb = new Entry(auto, distance, price,
  106. fuel, date, m.group(5));
  107. logbook.addCar(auto);
  108. logbook.addEntry(blubb);
  109. } else if (m.group(2).equals("GASOLINE")) {
  110. Car auto = new Car(m.group(1), FuelType.Gasoline);
  111. Entry blubb = new Entry(auto, distance, price,
  112. fuel, date, m.group(5));
  113. logbook.addCar(auto);
  114. logbook.addEntry(blubb);
  115. } else {
  116. throw new IOException(
  117. "Bitte gueltigen Benzintyp eingeben.");
  118. }
  119.  
  120. // Eine Zeile verarbeiten (Car-Objekt erzeugen,
  121. // Entry-Objekt
  122. // erzeugen)
  123. } else {
  124. throw new IOException(
  125. "Es wurde kein passender Eintrag gefunden.");
  126. }
  127. }
  128. }
  129. }
  130. is.close();
  131. return logbook;
  132. }
  133.  
  134. public static void main(String[] args) {
  135. // bei load mit regulaeren ausdruecken arbeiten und match und pattern
  136. // und wenn ich etwas bei dem compile in klammern nehm dann zaehlt des
  137. // als gruppe
  138. // wenn ich aber mache (?:....) dann zaehlt es nicht als gruppe
  139. // ist hilfreich wenn man z.b. tier: (?:Katze|Hund) die klammer setzt
  140. // damit des oder richtig funktioniert.
  141. // Pattern p = Pattern
  142. // .compile("(\\d{2}\\.\\d{2}\\.\\d{4}) (\\d+\\.\\d{2}\u20ac), \\d+\\.\\d{2}l, \\d+\\.\\d{2}km, \\d+\\.\\d{2}\u20ac/km \\([^\\(\\)]+\\)");
  143. // Matcher m = p
  144. // .matcher("21.05.2014 56.53\u20ac, 37.38l, 560.30km, 0.10\u20ac/km (Ausflug)");
  145. //
  146. // System.out.println(m.matches());
  147. // if (m.matches()) {
  148. // System.out.println(m.group(1));
  149. // System.out.println(m.group(2));
  150. // }
  151. Pattern p = Pattern
  152. .compile("([0-9][0-9]\\.[0-9][0-9]\\.[0-9][0-9][0-9][0-9]);([0-9]+\\.[0-9][0-9]);([0-9]+\\.[0-9][0-9]);([0-9]+\\.[0-9][0-9]);([^\\(\\)]+)");
  153. Matcher m = p.matcher("03.06.2014;627.30;58.50;43.33;Festival");
  154. Pattern c = Pattern.compile("([^\\(\\)]+)\\[([^\\(\\)]+)\\]");
  155. Matcher cm = c.matcher("Audi [Diesel]");
  156. if (cm.matches()) {
  157. System.out.println(cm.group(2));
  158. }
  159. System.out.println(m.matches());
  160. if (m.matches()) {
  161. System.out.println(m.group(2));
  162. }
  163. }
  164. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement