Repository navigation
Expand file tree
/
Copy pathDeliveryExtract.java
More file actions
17 lines (10 loc) · 4.62 KB
/
Copy pathDeliveryExtract.java
File metadata and controls
17 lines (10 loc) · 4.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.io.BufferedReader;import java.io.FileReader;import java.io.FileWriter;import java.util.Vector;import java.util.Collections;import java.util.Date;import java.text.DateFormat;import java.text.SimpleDateFormat;import java.util.Arrays;import java.io.File;import java.io.FilenameFilter;public class DeliveryExtract { public static void main(String[] args) { String lineEnd = System.getProperty("line.separator");// Java 6 code Vector <String> v = new Vector <String>();// Vector v = new Vector(); DateFormat dateFormat = new SimpleDateFormat("yyMMddHHmmss"); Date date = new Date(); // Select all *.delivery files to process File files[]; File path = new File( "\\\\vik-test\\transfers\\AXD\\inbound\\europe");// "C:\\TEMP\\asn\\"); DeliveryFilter filter = new DeliveryFilter(); files = path.listFiles(filter); Arrays.sort(files); // // Main looping structure. Executes once for each file found //// for (int i = 0, n = files.length; i < n; i++) { for (int i = 0, n = 1; i < n; i++) { System.out.println(files[i].getName()); v.clear(); try { FileReader fr = new FileReader("\\\\vik-test\\transfers\\AXD\\inbound\\europe\\" + files[i].getName());// FileReader fr = new FileReader("C:\\TEMP\\asn\\" + files[i].getName()); BufferedReader br = new BufferedReader(fr); // String to contain lines from the file String s = ""; // Save the vendor no. String vendor = ""; // Save the delivery no. String delivery = "";
// Save the delivery no.
String order = "";
// Count line items for output file(s) and include on trailer int lineCnt = 0; // Loop through lines of the file, storing the file content while ((s = br.readLine()) != null) { if (s.substring(0, 1).equals("H")) vendor = s.substring(1, 11); if (s.substring(0, 1).equals("D")) v.add(vendor + " " + s.substring(26, 39) + s.substring(111, 136) + " " + s); } // Close the file fr.close(); // Sort items by vendor, invoice Collections.sort(v); // Initalize control breaks System.out.println("Vector contains..."); // display elements of Vector int index = 0; s = (v.get(index).toString()); // get 1st record String saveVendor = s.substring(0, 10); // set control break String saveOrder = s.substring(11, 23); // set control break
String saveDelivery = s.substring(24, 49); // set control break //create file name// String fNam = dateFormat.format(date) + saveOrder+"_"+ saveDelivery + "_" + i + ".delivery";
String fNam = dateFormat.format(date) + "_"+ saveOrder.trim()+"_"+ saveDelivery.trim() + "_" + i + ".delivery";
System.out.println("File: " + fNam); FileWriter fOut = new FileWriter("\\\\vik-test\\transfers\\AXD\\inbound\\europe\\asn\\" + fNam);// FileWriter fOut = new FileWriter("C:\\TEMP\\asn\\" + fNam); fOut.write("H" + saveVendor + lineEnd); // write header record lineCnt=0; while (index < v.size()) { vendor = s.substring(0, 10); // get control break order = s.substring(11, 23);
delivery = s.substring(24, 49); // get control break if (!vendor.equals(saveVendor)
|| !order.equals(saveOrder) || !delivery.equals(saveDelivery)) { fOut.write("T" + saveVendor + lineCnt + lineEnd); // write trailer // record fOut.close(); fNam = dateFormat.format(date) + "_"+ order.trim() +"_"+ delivery.trim() + "_" + i + ".delivery"; // create // file name fOut = new FileWriter("\\\\vik-test\\transfers\\AXD\\inbound\\europe\\asn\\" + fNam);// fOut = new FileWriter("C:\\TEMP\\asn\\" + fNam); fOut.write("H" + vendor + lineEnd); // write header saveVendor = vendor; // set control break saveDelivery = delivery; // set control break
saveOrder = order; lineCnt=0; } // System.out.println(s); fOut.write(s.substring(50) + lineEnd); // write out data System.out.println("Record: " + s); ++index; ++lineCnt; if (index < v.size()) s = (v.get(index).toString()); } fOut.write("T" + vendor + lineCnt + lineEnd); // write trailer record fOut.close(); } catch (Throwable e) { e.printStackTrace(); } } }}class DeliveryFilter implements FilenameFilter { /** * Select only DL* files. * * @param dir * the directory in which the file was found. * * @param name * the name of the file * * @return true if and only if the name should be included in the file list; * false otherwise. */ public boolean accept(File dir, String name) { if (new File(dir, name).isDirectory()) { return false; } name = name.toLowerCase(); return name.startsWith("dl"); }}