Package org.cishell.reference.gui.workflow.controller

Source Code of org.cishell.reference.gui.workflow.controller.WorkflowMaker

package org.cishell.reference.gui.workflow.controller;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;

import javax.swing.JFileChooser;

import org.cishell.reference.gui.workflow.model.AlgorithmWorkflowItem;
import org.cishell.reference.gui.workflow.model.NormalWorkflow;
import org.cishell.reference.gui.workflow.model.Workflow;
import org.cishell.reference.gui.workflow.model.WorkflowItem;
import org.cishell.reference.gui.workflow.views.WorkflowView;
import org.eclipse.swt.widgets.Display;

import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;
import com.thoughtworks.xstream.io.xml.StaxDriver;

public class WorkflowMaker {
  public WorkflowMaker() {

  }

  public void save(Workflow wf) {
    write(wf);
  }

  public synchronized void load() {
    new Thread(new Runnable() {
      public void run() {

        JFileChooser fileChooser = new JFileChooser();
        File currentDirectory = null;
        fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        fileChooser.setCurrentDirectory(currentDirectory);
        fileChooser.showOpenDialog(null);
        File file = fileChooser.getSelectedFile();
        FileReader freader;
        BufferedReader in;
        XStream reader;

        if (file != null) {
          try {
            freader = new FileReader(file);
            in = new BufferedReader(freader);
            reader = new XStream(new StaxDriver());
            reader.setClassLoader(WorkflowSaver.class
                .getClassLoader());
            WorkflowSaver saver = (WorkflowSaver) reader
                .fromXML(in);
            // print all the VALUES
            WorkflowManager mgr = WorkflowManager.getInstance();
            List<Workflow> list = new ArrayList<Workflow>();

            Workflow wf = saver.getCurrentWorkflow();

            list.add(wf);
            for (Map.Entry<Long, WorkflowItem> item : ((NormalWorkflow) wf)
                .getMap().entrySet()) {
              ((AlgorithmWorkflowItem) item.getValue())
                  .setWorkflow(wf);
            }
            Long id = mgr.getUniqueInternalId();
            wf.setInternalId(id);
            mgr.addWorkflow(id, wf);

            final List<Workflow> wfList = new ArrayList<Workflow>(
                list);
            Display.getDefault().asyncExec(new Runnable() {
              public void run() {
                for (Workflow wf : wfList) {
                  WorkflowView.getDefault()
                      .addWorflowtoUI(wf);
                }
              }
            });
            return;
          } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
          }
        }
        return;
      }
    }).start();
  }

  public void write(final Workflow wf) {
    new Thread(new Runnable() {
      public void run() {
        XStream writer = new XStream(new StaxDriver());
        writer.autodetectAnnotations(true);
        String xml = writer.toXML(new WorkflowSaver(wf));
        File currentDirectory = null;
        JFileChooser fileChooser = new JFileChooser();
        fileChooser.setFileSelectionMode(JFileChooser.FILES_ONLY);
        fileChooser.setCurrentDirectory(currentDirectory);
        fileChooser.showSaveDialog(null);
        File file = fileChooser.getSelectedFile();
        String filePath = file.getPath();
        if (!filePath.toLowerCase().endsWith(".xml")) {
          file = new File(filePath + ".xml");
        }

        if (file != null) {
          try {
            FileWriter fstream;
            fstream = new FileWriter(file);
            BufferedWriter out = new BufferedWriter(fstream);
            out.write(xml);
            out.close();
          } catch (IOException e) {
            e.printStackTrace();
          }
        }
      }
    }).start();
  }

}
TOP

Related Classes of org.cishell.reference.gui.workflow.controller.WorkflowMaker

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.