KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > it > stefanochizzolini > clown > samples > PDFClownSampleLoader


1 package it.stefanochizzolini.clown.samples;
2
3 import it.stefanochizzolini.clown.bytes.OutputStream;
4 import it.stefanochizzolini.clown.files.File;
5 import it.stefanochizzolini.clown.files.SerializationModeEnum;
6 import it.stefanochizzolini.reflex.Package;
7
8 import java.io.BufferedOutputStream JavaDoc;
9 import java.io.FileInputStream JavaDoc;
10 import java.io.FileOutputStream JavaDoc;
11 import java.util.ArrayList JavaDoc;
12 import java.util.Arrays JavaDoc;
13 import java.util.List JavaDoc;
14 import java.util.Properties JavaDoc;
15 import java.util.Scanner JavaDoc;
16
17 public class PDFClownSampleLoader
18 {
19   // <static>
20
// <fields>
21
private static final String JavaDoc ClassName = PDFClownSampleLoader.class.getName();
22
23   private static final String JavaDoc PropertiesFilePath = "PDFClownSamples.properties";
24
25   private static final String JavaDoc Properties_InputPath = ClassName + ".inputPath";
26   private static final String JavaDoc Properties_OutputPath = ClassName + ".outputPath";
27   // </fields>
28

29   // <interface>
30
// <public>
31
public static void main(
32     String JavaDoc[] args
33     )
34   {
35     System.out.println("\nPDFClownSampleLoader running...\n");
36
37     try
38     {
39       java.lang.Package JavaDoc pdfClownPackage = Class.forName("it.stefanochizzolini.clown.Application").getPackage();
40       System.out.println(pdfClownPackage.getSpecificationTitle() + " version " + pdfClownPackage.getImplementationVersion());
41     }
42     catch(Exception JavaDoc e)
43     {throw new RuntimeException JavaDoc("Unable to detect PDFClown library version.",e);}
44
45     Properties JavaDoc properties = new Properties JavaDoc();
46     try
47     {
48       properties.load(
49         new FileInputStream JavaDoc(PropertiesFilePath)
50         );
51     }
52     catch(Exception JavaDoc e)
53     {throw new RuntimeException JavaDoc("An exception occurred while loading the properties file (\"" + PropertiesFilePath + "\").",e);}
54
55     try
56     {
57       PDFClownSampleLoader loader = new PDFClownSampleLoader(
58         properties.getProperty(Properties_InputPath),
59         properties.getProperty(Properties_OutputPath)
60         );
61       loader.run();
62     }
63     catch(Exception JavaDoc e)
64     {throw new RuntimeException JavaDoc(e);}
65
66     System.out.println("\nPDFClownSampleLoader finished.\n");
67   }
68   // </public>
69
// </interface>
70
// </static>
71

72   // <dynamic>
73
// <fields>
74
private String JavaDoc inputPath;
75   private String JavaDoc outputPath;
76   // </fields>
77

78   // <constructors>
79
public PDFClownSampleLoader(
80     String JavaDoc inputPath,
81     String JavaDoc outputPath
82     )
83   {
84     this.inputPath = new java.io.File JavaDoc(inputPath).getAbsolutePath();
85     this.outputPath = new java.io.File JavaDoc(outputPath).getAbsolutePath();
86   }
87   // </constructors>
88

89   // <interface>
90
// <public>
91
public String JavaDoc getFileChoice(
92     String JavaDoc fileExtension,
93     String JavaDoc listDescription,
94     String JavaDoc inputDescription
95     )
96   {
97     Scanner JavaDoc in = new Scanner JavaDoc(System.in);
98
99     System.out.println("\n" + listDescription + ":");
100     SampleResources resources = new SampleResources(new java.io.File JavaDoc(inputPath + java.io.File.separator + "pdf" + java.io.File.separator));
101     // Get the list of available PDF files!
102
String JavaDoc[] filePaths = resources.filter(fileExtension);
103     // Display files!
104
resources.printList(filePaths);
105     // Get the user's choice!
106
System.out.print(inputDescription + ": ");
107     try
108     {return inputPath + java.io.File.separator + "pdf" + java.io.File.separator + filePaths[Integer.parseInt(in.nextLine())]; /* Custom choice. */}
109     catch(Exception JavaDoc e)
110     {return inputPath + java.io.File.separator + "pdf" + java.io.File.separator + filePaths[0]; /* Default choice. */}
111   }
112
113   public String JavaDoc getInputPath(
114     )
115   {return inputPath;}
116
117   public String JavaDoc getOutputPath(
118     )
119   {return outputPath;}
120
121   public String JavaDoc getPdfFileChoice(
122     String JavaDoc inputDescription
123     )
124   {
125     return getFileChoice(
126       "pdf",
127       "Available PDF files",
128       inputDescription
129       );
130   }
131
132   public void run(
133     )
134   {
135     Scanner JavaDoc in = new Scanner JavaDoc(System.in);
136     String JavaDoc samplePackageName = PDFClownSampleLoader.class.getPackage().getName();
137     while(true)
138     {
139       // Get the classes belonging to the current package!
140
/*
141         NOTE: We restrict our retrieval to the current deployment unit only.
142       */

143       List JavaDoc<Class JavaDoc> samplePackageClasses = Package.getClasses(
144         samplePackageName, // Package: current package.
145
new String JavaDoc[]
146         {
147           it.stefanochizzolini.reflex.Class.getLocation(ClassName)
148         } // Locations: current deployment unit only.
149
);
150       Class JavaDoc sampleInterface = ISample.class;
151
152       System.out.println("\nAvailable samples:");
153       // Instantiate the list of available samples!
154
List JavaDoc<java.lang.Class JavaDoc> sampleClasses = new ArrayList JavaDoc<java.lang.Class JavaDoc>();
155       // Picking available samples...
156
for(Class JavaDoc samplePackageClass : samplePackageClasses)
157       {
158         if(
159           Arrays.asList(
160             samplePackageClass.getInterfaces()
161             ).contains(sampleInterface)
162           )
163         {
164           sampleClasses.add(samplePackageClass);
165           System.out.println("[" + sampleClasses.indexOf(samplePackageClass) + "] " + samplePackageClass.getSimpleName());
166         }
167       }
168       System.out.println("[Q] (Quit)");
169
170       // Getting the user's choice...
171
Class JavaDoc sampleClass = null;
172       System.out.print("Please select a sample: ");
173       try
174       {
175         String JavaDoc choice = in.nextLine();
176         if(choice.toUpperCase().equals("Q")) // Quit.
177
break;
178
179         sampleClass = sampleClasses.get(Integer.parseInt(choice)); // Custom choice.
180
}
181       catch(Exception JavaDoc e)
182       {
183         sampleClass = sampleClasses.get(0); // Default choice.
184
}
185
186       System.out.println("\nInstantiating " + sampleClass.getName() + " sample...");
187
188       // Instantiate the sample!
189
ISample sample;
190       try
191       {sample = (ISample)sampleClass.newInstance();}
192       catch(Exception JavaDoc e)
193       {throw new RuntimeException JavaDoc(sampleClass.getName() + " sample class has failed to instantiate.",e);}
194
195       System.out.println("\nRunning " + sampleClass.getName() + " sample...");
196
197       try
198       {
199         // Run the sample!
200
sample.run(this);
201       }
202       catch(Exception JavaDoc e)
203       {System.out.println("An exception happened while running the sample:");e.printStackTrace();continue;}
204     }
205   }
206
207   public void serialize(
208     File file,
209     String JavaDoc outputFileName
210     )
211   {
212     serialize(
213       file,
214       outputFileName,
215       true
216       );
217   }
218
219   public void serialize(
220     File file,
221     String JavaDoc outputFileName,
222     boolean chooseMode
223     )
224   {
225     Scanner JavaDoc in = new Scanner JavaDoc(System.in);
226
227     SerializationModeEnum serializationMode = SerializationModeEnum.Incremental;
228     if(chooseMode)
229     {
230       System.out.println("[0] Standard serialization");
231       System.out.println("[1] Incremental update");
232       // Get the user's choice.
233
System.out.print("Please select a serialization mode: ");
234       try
235       {serializationMode = SerializationModeEnum.values()[Integer.parseInt(in.nextLine())];}
236       catch(Exception JavaDoc e)
237       {/* Default. */}
238     }
239
240     java.io.File JavaDoc outputFile = new java.io.File JavaDoc(outputPath + java.io.File.separator + outputFileName + "." + serializationMode + ".pdf");
241     OutputStream outputStream;
242     BufferedOutputStream JavaDoc baseOutputStream;
243     try
244     {
245       outputFile.createNewFile();
246       baseOutputStream = new BufferedOutputStream JavaDoc(
247         new FileOutputStream JavaDoc(outputFile)
248         );
249       outputStream = new it.stefanochizzolini.clown.bytes.OutputStream(baseOutputStream);
250     }
251     catch(Exception JavaDoc e)
252     {throw new RuntimeException JavaDoc(outputFile.getPath() + " file couldn't be created.",e);}
253
254     try
255     {
256       file.writeTo(
257         outputStream,
258         serializationMode
259         );
260
261       baseOutputStream.flush();
262       baseOutputStream.close();
263     }
264     catch(Exception JavaDoc e)
265     {throw new RuntimeException JavaDoc(outputFile.getPath() + " file writing has failed.",e);}
266
267     System.out.println("Output: " + outputFile.getPath());
268   }
269   // </public>
270
// </interface>
271
// </dynamic>
272
}
Popular Tags