20 package net.sf.gridarta.model.resource;
22 import java.io.BufferedReader;
24 import java.io.FileInputStream;
25 import java.io.IOException;
26 import java.io.InputStreamReader;
27 import java.io.Reader;
28 import java.util.ArrayList;
29 import java.util.Arrays;
30 import java.util.Collection;
31 import java.util.List;
49 import org.apache.log4j.Category;
50 import org.apache.log4j.Logger;
51 import org.jetbrains.annotations.NotNull;
52 import org.jetbrains.annotations.Nullable;
107 protected AbstractFilesResourcesReader(@NotNull
final File
archDirectory, @NotNull
final ArchetypeSet<G, A, R> archetypeSet, @NotNull
final AbstractArchetypeParser<G, A, R, ?> archetypeParser, @NotNull
final ArchFaceProvider archFaceProvider, @NotNull
final File
collectedDirectory, @Nullable
final String
imageSet, @NotNull
final AnimationObjects animationObjects, @NotNull
final FaceObjects faceObjects) {
122 final Collection<Pair<String, File>> animFiles =
new ArrayList<>();
124 loadArchetypesFromFiles(archDirectoryErrorViewCollector,
archetypeParser,
"",
archDirectory, 0,
"default",
"default", invObjects,
archFaceProvider, errorView, animFiles);
126 if (
LOG.isInfoEnabled()) {
129 if (
LOG.isInfoEnabled()) {
132 if (
LOG.isInfoEnabled()) {
153 private void loadArchetypesFromFiles(@NotNull
final ErrorViewCollector errorViewCollector, @NotNull
final AbstractArchetypeParser<G, A, R, ?> archetypeParser, @NotNull
final String path, @NotNull
final File f,
final int folderLevel, @NotNull
final String panelName, @NotNull
final String folderName, @NotNull
final List<G> invObjects, @NotNull
final ArchFaceProvider archFaceProvider, @NotNull
final ErrorView errorView, @NotNull
final Collection<
Pair<String, File>> animFiles) {
154 final String name = f.getName();
155 if (f.isDirectory()) {
158 final String[] entries = f.list();
159 if (entries ==
null) {
162 Arrays.sort(entries);
163 final String thisPanelName = folderLevel == 1 ? name : panelName;
164 final String thisFolderName = folderLevel == 1 || folderLevel == 2 ? name : folderName;
165 final String newPath = folderLevel == 0 ?
"" : path +
"/" + name;
166 for (
final String entry : entries) {
167 loadArchetypesFromFiles(errorViewCollector,
archetypeParser, newPath,
new File(f, entry), folderLevel + 1, thisPanelName, thisFolderName, invObjects,
archFaceProvider, errorView, animFiles);
171 }
else if (f.isFile()) {
174 try (FileInputStream fis =
new FileInputStream(f)) {
176 try (BufferedReader in =
new BufferedReader(isr)) {
181 }
catch (
final IOException ex) {
191 animFiles.add(
new Pair<>(path, f));
202 private void parseDefFace(@NotNull
final ErrorView errorView, @NotNull
final String path, @NotNull
final String filename) {
205 try (FileInputStream fis =
new FileInputStream(path)) {
207 try (Reader in =
new BufferedReader(isr)) {
212 }
catch (
final IOException ex) {
231 final String animPath = pair.getFirst();
232 final File animFile = pair.getSecond();
235 }
catch (
final IOException ex) {
249 protected abstract boolean isValidEntry(
int folderLevel, String name);