Search in sources :

Example 1 with LSTConverter

use of pcgen.gui2.converter.LSTConverter in project pcgen by PCGen.

the class RunConvertPanel method performAnalysis.

/**
	 * @see pcgen.gui2.converter.panel.ConvertSubPanel#performAnalysis(pcgen.cdom.base.CDOMObject)
	 */
@Override
public boolean performAnalysis(final CDOMObject pc) {
    logSummary(pc);
    final File rootDir = pc.get(ObjectKey.DIRECTORY);
    final File outDir = pc.get(ObjectKey.WRITE_DIRECTORY);
    totalCampaigns = new ArrayList<>(pc.getSafeListFor(ListKey.CAMPAIGN));
    for (Campaign campaign : pc.getSafeListFor(ListKey.CAMPAIGN)) {
        // Add all sub-files to the main campaign, regardless of exclusions
        for (CampaignSourceEntry fName : campaign.getSafeListFor(ListKey.FILE_PCC)) {
            URI uri = fName.getURI();
            if (PCGFile.isPCGenCampaignFile(uri)) {
                Campaign c = Globals.getCampaignByURI(uri, false);
                if (c != null) {
                    totalCampaigns.add(c);
                }
            }
        }
    }
    sortCampaignsByRank(totalCampaigns);
    new Thread(new Runnable() {

        @Override
        public void run() {
            Logging.registerHandler(getHandler());
            SettingsHandler.setGame(pc.get(ObjectKey.GAME_MODE).getName());
            GameMode mode = SettingsHandler.getGame();
            //Necessary for "good" behavior
            mode.resolveInto(context.getReferenceContext());
            //Necessary for those still using Globals.getContext
            mode.resolveInto(mode.getContext().getReferenceContext());
            LSTConverter converter;
            Writer changeLogWriter;
            try {
                changeLogWriter = new FileWriter(changeLogFile);
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm");
                String startTime = simpleDateFormat.format(new Date());
                changeLogWriter.append("PCGen Data Converter v" + PCGenPropBundle.getVersionNumber() + " - conversion started at " + startTime + "\n");
                changeLogWriter.append("Outputting files to " + outDir.getAbsolutePath() + "\n");
            } catch (IOException e1) {
                Logging.errorPrint("Failed to initialise LSTConverter", e1);
                return;
            }
            converter = new LSTConverter(context, rootDir, outDir.getAbsolutePath(), RunConvertPanel.this, changeLogWriter);
            converter.addObserver(RunConvertPanel.this);
            int numFiles = 0;
            for (Campaign campaign : totalCampaigns) {
                numFiles += converter.getNumFilesInCampaign(campaign);
            }
            setTotalFileCount(numFiles);
            converter.initCampaigns(totalCampaigns);
            for (Campaign campaign : totalCampaigns) {
                converter.processCampaign(campaign);
            }
            ObjectInjector oi = new ObjectInjector(context, outDir, rootDir, converter);
            try {
                oi.writeInjectedObjects(totalCampaigns);
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            try {
                changeLogWriter.close();
            } catch (IOException e) {
                Logging.errorPrint("LSTConverter.wrapUp failed", e);
            }
            converter.deleteObserver(RunConvertPanel.this);
            Logging.removeHandler(getHandler());
            try {
                // Wait for any left over messages to catch up
                Thread.sleep(1000);
            } catch (InterruptedException e) {
            // Ignore exception
            }
            setCurrentFilename("");
            addMessage("\nConversion complete.");
            if (getHandler().getNumErrors() > 0) {
                JOptionPane.showMessageDialog(null, LanguageBundle.getFormattedString(//$NON-NLS-1$
                "in_lstConvErrorsFound", getHandler().getNumErrors()), LanguageBundle.getString(//$NON-NLS-1$
                "in_lstConvErrorsTitle"), JOptionPane.ERROR_MESSAGE);
            }
            progressBar.setValue(progressBar.getMaximum());
            fireProgressEvent(ProgressEvent.AUTO_ADVANCE);
        }
    }).start();
    return true;
}
Also used : LSTConverter(pcgen.gui2.converter.LSTConverter) FileWriter(java.io.FileWriter) IOException(java.io.IOException) URI(java.net.URI) Date(java.util.Date) CampaignSourceEntry(pcgen.persistence.lst.CampaignSourceEntry) GameMode(pcgen.core.GameMode) Campaign(pcgen.core.Campaign) PCGFile(pcgen.io.PCGFile) File(java.io.File) SimpleDateFormat(java.text.SimpleDateFormat) ObjectInjector(pcgen.gui2.converter.ObjectInjector) Writer(java.io.Writer) FileWriter(java.io.FileWriter)

Aggregations

File (java.io.File)1 FileWriter (java.io.FileWriter)1 IOException (java.io.IOException)1 Writer (java.io.Writer)1 URI (java.net.URI)1 SimpleDateFormat (java.text.SimpleDateFormat)1 Date (java.util.Date)1 Campaign (pcgen.core.Campaign)1 GameMode (pcgen.core.GameMode)1 LSTConverter (pcgen.gui2.converter.LSTConverter)1 ObjectInjector (pcgen.gui2.converter.ObjectInjector)1 PCGFile (pcgen.io.PCGFile)1 CampaignSourceEntry (pcgen.persistence.lst.CampaignSourceEntry)1