Newer
Older
AlgebraicDataflowArchitectureModel / AlgebraicDataflowArchitectureModel / src / graphicalrefactor / editor / WebServiceEditor.java
k-fujii on 20 Apr 2023 3 KB Parser fixed.
package graphicalrefactor.editor;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;

import com.mxgraph.view.mxGraph;

import algorithms.UpdateConflictCheck;
import models.dataFlowModel.DataFlowModel;
import models.webServices.Service;
import models.webServices.WebServicesInfo;
import parser.ParserDTRAMForWebService;
import parser.exceptions.ExpectedAssignment;
import parser.exceptions.ExpectedChannel;
import parser.exceptions.ExpectedChannelName;
import parser.exceptions.ExpectedEquals;
import parser.exceptions.ExpectedFormulaChannel;
import parser.exceptions.ExpectedGeometry;
import parser.exceptions.ExpectedInOrOutOrRefKeyword;
import parser.exceptions.ExpectedIoChannel;
import parser.exceptions.ExpectedLeftCurlyBracket;
import parser.exceptions.ExpectedModel;
import parser.exceptions.ExpectedNode;
import parser.exceptions.ExpectedRHSExpression;
import parser.exceptions.ExpectedResource;
import parser.exceptions.ExpectedRightBracket;
import parser.exceptions.ExpectedStateTransition;
import parser.exceptions.WrongLHSExpression;
import parser.exceptions.WrongRHSExpression;
import parser.exceptions.webService.ExpectedBaseURL;
import parser.exceptions.webService.ExpectedResources;
import parser.exceptions.webService.ExpectedWebService;

/**--------------------------------------------------------------------------------
 * this class is called when you design of Web services.
/**--------------------------------------------------------------------------------
 * 
 * @author k-fujii
 */
public class WebServiceEditor extends Editor{

	private WebServicesInfo webServices = null;

	/**--------------------------------------------------------------------------------
	 * [constructor]
	/**--------------------------------------------------------------------------------
	 * 
	 * @param graph : the editor of generate prototype tool.
	 * 
	 */
	public WebServiceEditor(final mxGraph graph) {
		super(graph);

		this.webServices = new WebServicesInfo();
	}

	/**--------------------------------------------------------------------------------
	 * [public]
	/**--------------------------------------------------------------------------------
	/** 
	 * @param file
	 */
	@Override
	public DataFlowModel open(final File file) {
		String extension ="";
		if(file != null && file.exists()) {
			String name = file.getName();
			extension = name.substring(name.lastIndexOf("."));
		}
		if(extension.contains(".model")) {
			openModel(file);
		} else {
			try {
				ParserDTRAMForWebService parser = new ParserDTRAMForWebService(new BufferedReader(new FileReader(file)));
				try {
					model = parser.doParseModel();				
					graph = constructGraph(model);

					parser.doParseGeometry(graph);
					parser.doParseWebService(this,model);

					curFilePath = file.getAbsolutePath();
					curFileName = file.getName();

					if (!UpdateConflictCheck.run(model)) return null;

					updateResourceDependencyGraph(model);

					return model;
				} catch (ExpectedChannel | ExpectedChannelName | ExpectedLeftCurlyBracket | ExpectedInOrOutOrRefKeyword
						| ExpectedStateTransition | ExpectedEquals | ExpectedRHSExpression | WrongLHSExpression
						| WrongRHSExpression | ExpectedRightBracket | ExpectedAssignment
						| ExpectedModel | ExpectedGeometry | ExpectedNode | ExpectedResource 
						| ExpectedFormulaChannel | ExpectedIoChannel
						| ExpectedWebService | ExpectedBaseURL| ExpectedResources e) {
					e.printStackTrace();
				}
			}catch(FileNotFoundException e) {
				e.printStackTrace();
			}
		}

		return null;
	}

	/**--------------------------------------------------------------------------------
	 * setter
	/**--------------------------------------------------------------------------------
	/** 
	 * @param service
	 */
	public void addWebService(final Service service) {
		this.webServices.addService(service);
	}
}