autodetect directory contents so directories other than res can be imported

This commit is contained in:
myk
2013-03-12 23:47:41 +00:00
parent 2bb96bdff3
commit 37821d1695
2 changed files with 77 additions and 8 deletions

View File

@@ -301,6 +301,9 @@ public class DialogMigrateProfile {
_unknownDeckCombo.addItem(new _UnknownDeckChoice("Planar", NewConstants.DECK_PLANE_DIR)); _unknownDeckCombo.addItem(new _UnknownDeckChoice("Planar", NewConstants.DECK_PLANE_DIR));
_unknownDeckCombo.addItem(new _UnknownDeckChoice("Scheme", NewConstants.DECK_SCHEME_DIR)); _unknownDeckCombo.addItem(new _UnknownDeckChoice("Scheme", NewConstants.DECK_SCHEME_DIR));
_unknownDeckCombo.addItem(new _UnknownDeckChoice("Sealed", NewConstants.DECK_SEALED_DIR)); _unknownDeckCombo.addItem(new _UnknownDeckChoice("Sealed", NewConstants.DECK_SEALED_DIR));
_unknownDeckCombo.addActionListener(new ActionListener() {
@Override public void actionPerformed(ActionEvent arg0) { _updateUI(); }
});
unknownDeckPanel.add(new FLabel.Builder().text("Treat unknown decks as:").build()); unknownDeckPanel.add(new FLabel.Builder().text("Treat unknown decks as:").build());
unknownDeckPanel.add(_unknownDeckCombo); unknownDeckPanel.add(_unknownDeckCombo);
knownDeckPanel.add(unknownDeckPanel, "span"); knownDeckPanel.add(unknownDeckPanel, "span");

View File

@@ -23,6 +23,7 @@ import java.util.HashSet;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import org.apache.commons.lang.UnhandledException;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.tuple.Pair; import org.apache.commons.lang3.tuple.Pair;
@@ -79,15 +80,60 @@ public class MigrationSourceAnalyzer {
public int getNumFilesAnalyzed() { return _numFilesAnalyzed; } public int getNumFilesAnalyzed() { return _numFilesAnalyzed; }
public void doAnalysis() { public void doAnalysis() {
// TODO: determine if this is really the res dir _identifyAndAnalyze(_source);
_analyzeResDir(_source); }
private void _identifyAndAnalyze(File root) {
// see if we can figure out the likely identity of the source folder and
// dispatch to the best analysis subroutine to handle it
String dirname = root.getName();
if ("res".equals(dirname)) { _analyzeOldResDir(root); }
else if ("constructed".equals(dirname)) { _analyzeConstructedDeckDir(root); }
else if ("draft".equals(dirname)) { _analyzeDraftDeckDir(root); }
else if ("plane".equals(dirname) || "planar".equals(dirname)) { _analyzePlanarDeckDir(root); }
else if ("scheme".equals(dirname)) { _analyzeSchemeDeckDir(root); }
else if ("sealed".equals(dirname)) { _analyzeSealedDeckDir(root); }
else if (StringUtils.containsIgnoreCase(dirname, "deck")) { _analyzeDecksDir(root); }
else if ("gauntlet".equals(dirname)) { _analyzeGauntletDataDir(root); }
else if ("layouts".equals(dirname)) { _analyzeLayoutsDir(root); }
else if ("pics".equals(dirname)) { _analyzeCardPicsDir(root); }
else if ("pics_product".equals(dirname)) { _analyzeProductPicsDir(root); }
else if ("preferences".equals(dirname)) { _analyzePreferencesDir(root); }
else if ("quest".equals(dirname)) { _analyzeQuestDir(root); }
else if (null != Singletons.getModel().getEditions().get(dirname)) { _analyzeCardPicsSetDir(root); }
else {
// look at files in directory and make a semi-educated guess based on file extensions
int numUnhandledFiles = 0;
for (File file : root.listFiles()) {
if (_cb.checkCancel()) { return; }
if (file.isFile()) {
String filename = file.getName();
if (filename.endsWith(".dck")) {
_analyzeDecksDir(root);
numUnhandledFiles = 0;
break;
} else if (filename.endsWith(".dat")) {
_analyzeQuestDataDir(root);
numUnhandledFiles = 0;
break;
}
++numUnhandledFiles;
} else if (file.isDirectory()) {
_identifyAndAnalyze(file);
}
}
_numFilesAnalyzed += numUnhandledFiles;
}
} }
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
// pre-profile res dir // pre-profile res dir
// //
private void _analyzeResDir(File root) { private void _analyzeOldResDir(File root) {
_analyzeDir(root, new _Analyzer() { _analyzeDir(root, new _Analyzer() {
@Override boolean onDir(File dir) { @Override boolean onDir(File dir) {
String dirname = dir.getName(); String dirname = dir.getName();
@@ -131,17 +177,17 @@ public class MigrationSourceAnalyzer {
@Override boolean onDir(File dir) { @Override boolean onDir(File dir) {
String dirname = dir.getName(); String dirname = dir.getName();
if ("constructed".equals(dirname)) { if ("constructed".equals(dirname)) {
_analyzeKnownDeckDir(dir, NewConstants.DECK_CONSTRUCTED_DIR, OpType.CONSTRUCTED_DECK); _analyzeConstructedDeckDir(dir);
} else if ("cube".equals(dirname)) { } else if ("cube".equals(dirname)) {
return false; return false;
} else if ("draft".equals(dirname)) { } else if ("draft".equals(dirname)) {
_analyzeKnownDeckDir(dir, NewConstants.DECK_DRAFT_DIR, OpType.DRAFT_DECK); _analyzeDraftDeckDir(dir);
} else if ("plane".equals(dirname) || "planar".equals(dirname)) { } else if ("plane".equals(dirname) || "planar".equals(dirname)) {
_analyzeKnownDeckDir(dir, NewConstants.DECK_PLANE_DIR, OpType.PLANAR_DECK); _analyzePlanarDeckDir(dir);
} else if ("scheme".equals(dirname)) { } else if ("scheme".equals(dirname)) {
_analyzeKnownDeckDir(dir, NewConstants.DECK_SCHEME_DIR, OpType.SCHEME_DECK); _analyzeSchemeDeckDir(dir);
} else if ("sealed".equals(dirname)) { } else if ("sealed".equals(dirname)) {
_analyzeKnownDeckDir(dir, NewConstants.DECK_SEALED_DIR, OpType.SEALED_DECK); _analyzeSealedDeckDir(dir);
} else { } else {
_analyzeKnownDeckDir(dir, null, OpType.UNKNOWN_DECK); _analyzeKnownDeckDir(dir, null, OpType.UNKNOWN_DECK);
} }
@@ -150,6 +196,26 @@ public class MigrationSourceAnalyzer {
}); });
} }
private void _analyzeConstructedDeckDir(File root) {
_analyzeKnownDeckDir(root, NewConstants.DECK_CONSTRUCTED_DIR, OpType.CONSTRUCTED_DECK);
}
private void _analyzeDraftDeckDir(File root) {
_analyzeKnownDeckDir(root, NewConstants.DECK_DRAFT_DIR, OpType.DRAFT_DECK);
}
private void _analyzePlanarDeckDir(File root) {
_analyzeKnownDeckDir(root, NewConstants.DECK_PLANE_DIR, OpType.PLANAR_DECK);
}
private void _analyzeSchemeDeckDir(File root) {
_analyzeKnownDeckDir(root, NewConstants.DECK_SCHEME_DIR, OpType.SCHEME_DECK);
}
private void _analyzeSealedDeckDir(File root) {
_analyzeKnownDeckDir(root, NewConstants.DECK_SEALED_DIR, OpType.SEALED_DECK);
}
private void _analyzeKnownDeckDir(File root, final String targetDir, final OpType opType) { private void _analyzeKnownDeckDir(File root, final String targetDir, final OpType opType) {
_analyzeDir(root, new _Analyzer() { _analyzeDir(root, new _Analyzer() {
@Override void onFile(File file) { @Override void onFile(File file) {