OpenKeyWord  Build_ID: 457, Datum: 01.02.2020 07:45:48
Dont repeat yourself. - Do it once and only once!
ResourceList.java
1 package okw;
2 
3 import java.io.File;
4 import java.io.IOException;
5 import java.util.ArrayList;
6 import java.util.Collection;
7 import java.util.Enumeration;
8 import java.util.regex.Pattern;
9 import java.util.zip.ZipEntry;
10 import java.util.zip.ZipException;
11 import java.util.zip.ZipFile;
12 
13 import okw.log.Logger_Sngltn;
14 
18 public class ResourceList
19 {
20 
25 
34  public static Collection<String> getResources(final Pattern pattern)
35  {
36  final ArrayList<String> retval = new ArrayList<String>();
37 
38  final String classPath = System.getProperty("java.class.path", ".");
39 
40  final String[] classPathElements = classPath.split(System.getProperty("path.separator"));
41 
42  Log.ResOpenListDebug( "Class Path..." );
43 
44  for (final String element : classPathElements)
45  {
46  Log.LogPrintDebug( element );
47  retval.addAll(getResources(element, pattern));
48  }
49 
51 
52  return retval;
53  }
54 
55  private static Collection<String> getResources(final String element, final Pattern pattern)
56  {
57  final ArrayList<String> retval = new ArrayList<String>();
58  final File file = new File(element);
59 
60  if (file.isDirectory())
61  {
62  retval.addAll(getResourcesFromDirectory(file, pattern));
63  }
64  else
65  {
66  retval.addAll(getResourcesFromJarFile(file, pattern));
67  }
68  return retval;
69  }
70 
71  private static Collection<String> getResourcesFromJarFile(final File file, final Pattern pattern) {
72  final ArrayList<String> retval = new ArrayList<String>();
73  ZipFile zf;
74  try {
75  zf = new ZipFile(file);
76  } catch (final ZipException e) {
77  throw new Error(e);
78  } catch (final IOException e) {
79  throw new Error(e);
80  }
81 
82  final Enumeration<?> e = zf.entries();
83  while (e.hasMoreElements()) {
84  final ZipEntry ze = (ZipEntry) e.nextElement();
85  final String fileName = ze.getName();
86  final boolean accept = pattern.matcher(fileName).matches();
87  if (accept) {
88  retval.add(fileName);
89  }
90  }
91  try {
92  zf.close();
93  } catch (final IOException e1) {
94  throw new Error(e1);
95  }
96  return retval;
97  }
98 
99  private static Collection<String> getResourcesFromDirectory(final File directory, final Pattern pattern) {
100  final ArrayList<String> retval = new ArrayList<String>();
101  final File[] fileList = directory.listFiles();
102  for (final File file : fileList) {
103  if (file.isDirectory()) {
104  retval.addAll(getResourcesFromDirectory(file, pattern));
105  } else {
106  try {
107  final String fileName = file.getCanonicalPath();
108  final boolean accept = pattern.matcher(fileName).matches();
109  if (accept) {
110  retval.add(fileName);
111  }
112  } catch (final IOException e) {
113  throw new Error(e);
114  }
115  }
116  }
117  return retval;
118  }
119 
127  public static void main(final String[] args) {
128  Pattern pattern;
129  if (args.length < 1) {
130  pattern = Pattern.compile(".*");
131  } else {
132  pattern = Pattern.compile(args[0]);
133  }
134  final Collection<String> list = ResourceList.getResources(pattern);
135  for (final String name : list) {
136  System.out.println(name);
137  }
138  }
139 }
okw.ResourceList
list resources available from the classpath @ *
Definition: ResourceList.java:18
okw.ResourceList.Log
static Logger_Sngltn Log
Zentrale Logger-Klasse stellt Logger-Methoden innerhalb von OKW zur Verfügung.
Definition: ResourceList.java:24
okw.log.Logger_Sngltn.getInstance
static Logger_Sngltn getInstance()
Zentrale Logger-Klasse stellt Logger-Methoden innerhalb von OKW zur Verfügung.
Definition: Logger_Sngltn.java:88
okw.ResourceList.main
static void main(final String[] args)
list the resources that match args[0]
Definition: ResourceList.java:127
okw.log.Logger_Sngltn.ResOpenListDebug
void ResOpenListDebug(String fpsListCaption)
Erzeugt eine hierachische Log-Ebene in der Ergenbniss-Ausgabe.
Definition: Logger_Sngltn.java:647
okw.ResourceList.getResources
static Collection< String > getResources(final Pattern pattern)
for all elements of java.class.path get a Collection of resources Pattern pattern = Pattern....
Definition: ResourceList.java:34
okw.log.Logger_Sngltn.ResCloseListDebug
void ResCloseListDebug()
Closes a hierarchical level in the results file that was opened with ResOpenList.
Definition: Logger_Sngltn.java:594
okw.log.Logger_Sngltn.LogPrintDebug
void LogPrintDebug(String fpsMessage)
Loggt eine Nachricht.
Definition: Logger_Sngltn.java:520
okw.log.Logger_Sngltn
Definition: Logger_Sngltn.java:54