/*******************************************************************************
* Copyright (c) 2008 Red Hat, Inc.
* Distributed under license by Red Hat, Inc. All rights reserved.
* This program is made available under the terms of the
* Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Red Hat, Inc. - initial API and implementation
******************************************************************************/
package org.jboss.tools.jbpm.convert.b2j.wizard;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.dom4j.Document;
import org.eclipse.core.resources.IContainer;
import org.eclipse.osgi.util.NLS;
import org.jboss.tools.jbpm.convert.b2j.messages.B2JMessages;
import org.jboss.tools.jbpm.convert.b2j.translate.TranslateHelper;
import org.jboss.tools.jbpm.convert.bpmnto.BpmnToPlugin;
import org.jboss.tools.jbpm.convert.b2j.translate.BPMN2JPDL;
import org.jboss.tools.jbpm.convert.b2j.translate.Constants;
import org.jboss.tools.jbpm.convert.b2j.translate.GraphicalFileGenerator;
import org.jboss.tools.jbpm.convert.bpmnto.util.BPMNToUtil;
import org.jboss.tools.jbpm.convert.bpmnto.wizard.BpmnToWizard;
/**
* @author Grid Qian
*
* the wizard for bpmn to jpdl translation
*/
public class B2JExportWizard extends BpmnToWizard {
private List<String> strForProcessList = new ArrayList<String>();
private List<String> strForGpdList = new ArrayList<String>();
private List<String> generatedFoldersList = new ArrayList<String>();
private List<String> generatedGpdFoldersList = new ArrayList<String>();
public void createGeneratedFile(boolean isOverWrite) {
String[] jpdlFolderNames = new String[this.generatedFoldersList.size()];
String location = super.getContainerPath((IContainer) super
.getTargetLocationSelection().getFirstElement());
int i = 0;
if (this.strForProcessList.size() > 0) {
// get a jpdl folders array from jpdl folder list
for (String name : this.generatedFoldersList) {
jpdlFolderNames[i] = name;
i++;
}
i = 0;
String[] strs = new String[strForProcessList.size()];
for (String pro : this.strForProcessList) {
strs[i] = pro;
i++;
}
try {
TranslateHelper.createFiles(location, bpmnFileName, strs,
jpdlFolderNames,
Constants.Jpdl_Process_Definition_Name, isOverWrite);
} catch (Exception e) {
BpmnToPlugin.getDefault().logError(e.getMessage());
}
}
if (this.strForGpdList.size() > 0) {
i = 0;
// get a gpd folders array from gpd folder list
for (String name : this.generatedGpdFoldersList) {
jpdlFolderNames[i] = name;
i++;
}
i = 0;
String[] strs = new String[strForGpdList.size()];
for (String pro : this.strForGpdList) {
strs[i] = pro;
i++;
}
try {
TranslateHelper.createFiles(location, bpmnFileName, strs,
jpdlFolderNames, Constants.Gpd_Definition_Name, false);
} catch (Exception e) {
BpmnToPlugin.getDefault().logError(e.getMessage());
}
}
}
public void translateBpmnToStrings() {
Document bpmnDocument = null;
try {
bpmnDocument = BPMNToUtil.parse(bpmnFileParentPath, bpmnFileName);
} catch (Exception e) {
errorList.add(NLS.bind(B2JMessages.Translate_Error_File_CanNotRead,
bpmnFileName));
}
BPMN2JPDL translator = new BPMN2JPDL(bpmnFileName, bpmnFileParentPath,
poolIdList, bpmnDocument);
this.setStrForProcessList(Arrays
.asList(translator.translateToStrings()));
for (Document def : translator.getProcessDefs()) {
this.generatedFoldersList.add(def.getName());
}
warningList.addAll(translator.getWarnings());
errorList.addAll(translator.getErrors());
// generate jpdl gpd file from *.bpmn_diagram
Document bpmnDiagramDocument = null;
try {
bpmnDiagramDocument = BPMNToUtil.parse(bpmnFileParentPath,
TranslateHelper.getBpmnDiagramName(bpmnFileName));
} catch (Exception e) {
errorList.add(NLS.bind(B2JMessages.Translate_Error_File_CanNotRead,
TranslateHelper.getBpmnDiagramName(bpmnFileName)));
}
if (bpmnDiagramDocument != null) {
GraphicalFileGenerator generator = new GraphicalFileGenerator(
bpmnDiagramDocument, translator.getMap(), bpmnFileParentPath,
bpmnFileName);
this.setStrForGpdList(Arrays.asList(generator.translateToStrings()));
for (Document def : generator.getGpdDefs()) {
this.generatedGpdFoldersList.add(def.getRootElement().attributeValue(Constants.Dom_Element_Name));
}
warningList.addAll(generator.getWarnings());
errorList.addAll(generator.getErrors());
}
}
public List<String> getStrForProcessList() {
return strForProcessList;
}
public void setStrForProcessList(List<String> strForProcessList) {
this.strForProcessList = strForProcessList;
}
public List<String> getStrForGpdList() {
return strForGpdList;
}
public void setStrForGpdList(List<String> strForGpdList) {
this.strForGpdList = strForGpdList;
}
public List<String> getGeneratedFoldersList() {
return generatedFoldersList;
}
public void setGeneratedFoldersList(List<String> generatedFoldersList) {
this.generatedFoldersList = generatedFoldersList;
}
}