All Downloads are FREE. Search and download functionalities are using the official Maven repository.

li.strolch.command.XmlImportModelCommand Maven / Gradle / Ivy

/*
 * Copyright 2013 Robert von Burg 
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *     http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package li.strolch.command;

import java.io.File;
import java.util.Set;

import li.strolch.agent.api.ComponentContainer;
import li.strolch.agent.impl.InMemoryElementListener;
import li.strolch.model.ModelStatistics;
import li.strolch.model.xml.XmlModelSaxFileReader;
import li.strolch.persistence.api.StrolchTransaction;
import li.strolch.service.api.Command;
import li.strolch.utils.dbc.DBC;

/**
 * @author Robert von Burg 
 */
public class XmlImportModelCommand extends Command {

	// input
	private File modelFile;
	private boolean addOrders;
	private boolean addResources;
	private boolean addActivities;
	private boolean updateOrders;
	private boolean updateResources;
	private boolean updateActivities;
	private Set orderTypes;
	private Set resourceTypes;
	private Set activityTypes;

	// output
	private ModelStatistics statistics;
	private boolean allowInclude;

	/**
	 * @param container
	 * @param tx
	 */
	public XmlImportModelCommand(ComponentContainer container, StrolchTransaction tx) {
		super(container, tx);
	}

	@Override
	public void validate() {
		DBC.PRE.assertExists("Model must exist!", this.modelFile);
	}

	@Override
	public void doCommand() {

		InMemoryElementListener elementListener = new InMemoryElementListener(tx());

		elementListener.setAddOrders(this.addOrders);
		elementListener.setAddResources(this.addResources);
		elementListener.setAddActivities(this.addActivities);
		elementListener.setUpdateOrders(this.updateOrders);
		elementListener.setUpdateResources(this.updateResources);
		elementListener.setUpdateActivities(this.updateActivities);
		elementListener.setOrderTypes(this.orderTypes);
		elementListener.setResourceTypes(this.resourceTypes);
		elementListener.setActivityTypes(this.activityTypes);

		XmlModelSaxFileReader handler = new XmlModelSaxFileReader(elementListener, this.modelFile, this.allowInclude);
		handler.parseFile();

		this.statistics = handler.getStatistics();
	}

	@Override
	public void undo() {
		logger.warn("Not undoing import of file " + this.modelFile);
	}

	/**
	 * @param modelFileName
	 */
	public void setModelFile(File modelFileName) {
		this.modelFile = modelFileName;
	}

	/**
	 * @param allowInclude
	 */
	public void setAllowInclude(boolean allowInclude) {
		this.allowInclude = allowInclude;
	}

	/**
	 * @param addOrders
	 *            the addOrders to set
	 */
	public void setAddOrders(boolean addOrders) {
		this.addOrders = addOrders;
	}

	/**
	 * @param addResources
	 *            the addResources to set
	 */
	public void setAddResources(boolean addResources) {
		this.addResources = addResources;
	}

	/**
	 * @param addActivities
	 *            the addActivities to set
	 */
	public void setAddActivities(boolean addActivities) {
		this.addActivities = addActivities;
	}

	/**
	 * @param updateOrders
	 *            the updateOrders to set
	 */
	public void setUpdateOrders(boolean updateOrders) {
		this.updateOrders = updateOrders;
	}

	/**
	 * @param updateResources
	 *            the updateResources to set
	 */
	public void setUpdateResources(boolean updateResources) {
		this.updateResources = updateResources;
	}

	/**
	 * @param updateActivities
	 *            the updateActivities to set
	 */
	public void setUpdateActivities(boolean updateActivities) {
		this.updateActivities = updateActivities;
	}

	/**
	 * @param orderTypes
	 *            the orderTypes to set
	 */
	public void setOrderTypes(Set orderTypes) {
		this.orderTypes = orderTypes;
	}

	/**
	 * @param resourceTypes
	 *            the resourceTypes to set
	 */
	public void setResourceTypes(Set resourceTypes) {
		this.resourceTypes = resourceTypes;
	}

	/**
	 * @param activityTypes
	 *            the activityTypes to set
	 */
	public void setActivityTypes(Set activityTypes) {
		this.activityTypes = activityTypes;
	}

	/**
	 * @return the statistics
	 */
	public ModelStatistics getStatistics() {
		return this.statistics;
	}
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy