⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 commandfactory.java

📁 关于 RFID 读写器的相关内容
💻 JAVA
📖 第 1 页 / 共 4 页
字号:
/*
 * Copyright (C) 2007 ETH Zurich
 *
 * This file is part of Fosstrak (www.fosstrak.org).
 *
 * Fosstrak is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License version 2.1, as published by the Free Software Foundation.
 *
 * Fosstrak is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with Fosstrak; if not, write to the Free
 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 * Boston, MA  02110-1301  USA
 */

package org.fosstrak.reader.rp.proxy.msg;

import java.io.StringWriter;
import java.util.Calendar;
import java.util.Collection;
import java.util.Iterator;

import javax.xml.bind.JAXBContext;
import javax.xml.bind.JAXBException;
import javax.xml.bind.Marshaller;

import org.fosstrak.reader.rp.proxy.msg.stubs.DataSelector;
import org.fosstrak.reader.rp.proxy.msg.stubs.NotificationChannel;
import org.fosstrak.reader.rp.proxy.msg.stubs.ReadPoint;
import org.fosstrak.reader.rp.proxy.msg.stubs.Source;
import org.fosstrak.reader.rp.proxy.msg.stubs.TagField;
import org.fosstrak.reader.rp.proxy.msg.stubs.TagFieldValue;
import org.fosstrak.reader.rp.proxy.msg.stubs.TagSelector;
import org.fosstrak.reader.rp.proxy.msg.stubs.Trigger;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.DataSelectorSerializer;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.EventTypeSerializer;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.FieldNameSerializer;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.NotificationChannelSerializer;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.ReadPointSerializer;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.ReaderDeviceSerializer;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.SourceSerializer;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.TagFieldSerializer;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.TagSelectorSerializer;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.TriggerSerializer;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.TriggerTypeSerializer;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.xml.DataSelectorSerializerImpl;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.xml.EventTypeSerializerImpl;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.xml.FieldNameSerializerImpl;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.xml.NotificationChannelSerializerImpl;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.xml.ReadPointSerializerImpl;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.xml.ReaderDeviceSerializerImpl;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.xml.SourceSerializerImpl;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.xml.TagFieldSerializerImpl;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.xml.TagSelectorSerializerImpl;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.xml.TriggerSerializerImpl;
import org.fosstrak.reader.rp.proxy.msg.stubs.serializers.xml.TriggerTypeSerializerImpl;
import org.fosstrak.reader.rprm.core.ReaderProtocolException;
import org.fosstrak.reader.rprm.core.msg.MessageSerializingException;
import org.fosstrak.reader.rprm.core.msg.command.Command;
import org.fosstrak.reader.rprm.core.msg.command.NotificationChannelCommand;
import org.fosstrak.reader.rprm.core.msg.command.ObjectFactory;
import org.fosstrak.reader.rprm.core.msg.command.SourceCommand;

/**
 * This class generates xml and text commands to send to a reader device.
 * 
 * @author Andreas F黵er, Remo Egli
 */
public class CommandFactory {

	/** count message ids */
	private static int counter = 0;
	
	/**
	 * This method creates xml commands.
	 * 
	 * @param object the type of the object on which the method should be executed
	 * @param command which should be executed
	 * @param params parameters which belongs to the command
	 * @param target the name of the object on which the method should be executed
	 * @return the command in xml format as string
	 * @throws ParameterTypeException if the parameters are illegal
	 */
	public static String getXMLCommand(String object, String command, Parameter[] params, String target) throws ParameterTypeException {
		
		ObjectFactory cmdFactory = new ObjectFactory();
		Command cmd = cmdFactory.createCommand();
		cmd.setId(Integer.toString(getNextId()));
		if (!target.equals("")) {
			cmd.setTargetName(target);
		}
		if (object.equals("ReaderDevice")) {
			ReaderDeviceSerializer rdCommand = new ReaderDeviceSerializerImpl(getNextId(), target);
			if (command.equals("getEPC")) {
				return rdCommand.getEPC();
			}
			else if (command.equals("getManufacturer")) {
				return rdCommand.getManufacturer();
			}
			else if (command.equals("getModel")) {
				return rdCommand.getModel();
			}
			else if (command.equals("getHandle")) {
				return rdCommand.getHandle();
			}
			else if (command.equals("setHandle")) {
				return rdCommand.setHandle(params[0].getInt());
			}
			
			else if (command.equals("getName")) {
				return rdCommand.getName();
			}
			else if (command.equals("setName")) {
				return rdCommand.setName(params[0].getString());
			}
			else if (command.equals("getRole")) {
				return rdCommand.getRole();
			}
			else if (command.equals("setRole")) {
				return rdCommand.setRole(params[0].getString());
			}
			else if (command.equals("getTimeTicks")) {
				return rdCommand.getTimeTicks();
			}
			else if (command.equals("getTimeUTC")) {
				return rdCommand.getTimeUTC();
			}
			else if (command.equals("setTimeUTC")) {
				return rdCommand.setTimeUTC(Calendar.getInstance().getTime()); 
			}
			else if (command.equals("getManufacturerDescription")) {
				return rdCommand.getManufacturerDescription();
			}
			else if (command.equals("getCurrentSource")) {
				return rdCommand.getCurrentSource();
			}
			else if (command.equals("setCurrentSource")) {
				Source src;
				try {
					src = Source.create(params[0].getString());
					return rdCommand.setCurrentSource(src);
				} catch (ReaderProtocolException e) {
					e.printStackTrace();
					return null;
				} 
				
			}
			else if (command.equals("getCurrentDataSelector")) {
				return rdCommand.getCurrentDataSelector();
			}
			else if (command.equals("setCurrentDataSelector")) {
				DataSelector ds;
				try {
					ds = DataSelector.create(params[0].getString());
					return rdCommand.setCurrentDataSelector(ds);
				} catch (ReaderProtocolException e) {
					e.printStackTrace();
					return null;
				}					
			}
			else if (command.equals("removeSources")) {
				Source[] sources = toSourceArray(params[0].getCollection());
				return rdCommand.removeSources(sources);
			}
			else if (command.equals("removeAllSources")) {
				return rdCommand.removeAllSources();
			}
			else if (command.equals("getSource")) {
				return rdCommand.getSource(params[0].getString());
			}
			else if (command.equals("getAllSources")) {
				return rdCommand.getAllSources();
			}
			else if (command.equals("removeDataSelectors")) {
				DataSelector[] ds = toDataSelectorArray(params[0].getCollection());
				return rdCommand.removeDataSelectors(ds);
			}
			else if (command.equals("removeAllDataSelectors")) {
				return rdCommand.removeAllDataSelectors();
			}
			else if (command.equals("getDataSelector")) {
				return rdCommand.getDataSelector(params[0].getString());
			}
			else if (command.equals("getAllDataSelectors")) {
				return rdCommand.getAllDataSelectors();
			}
			else if (command.equals("removeNotificationChannels")) {
				NotificationChannel[] ncs = toNotificationChannelArray(params[0].getCollection());
				return rdCommand.removeNotificationChannels(ncs);
			}
			else if (command.equals("removeAllNotificationChannels")) {
				return rdCommand.removeAllNotificationChannels();
			}
			else if (command.equals("getNotificationChannel")) {
				return rdCommand.getNotificationChannel(params[0].getString());
			}
			else if (command.equals("getAllNotificationChannels")) {
				return rdCommand.getAllNotificationChannels();
			}
			else if (command.equals("removeTriggers")) {
				Trigger[] trgs = toTriggerArray(params[0].getCollection());
				return rdCommand.removeTriggers(trgs);
			}
			else if (command.equals("removeAllTriggers")) {
				return rdCommand.removeAllTriggers();
			}
			else if (command.equals("getTrigger")) {
				return rdCommand.getTrigger(params[0].getString());
			}
			else if (command.equals("getAllTriggers")) {
				return rdCommand.getAllTriggers();
			}
			else if (command.equals("removeTagSelectors")) {
				TagSelector[] tss = toTagSelectorArray(params[0].getCollection());
				return rdCommand.removeTagSelectors(tss);
			}
			else if (command.equals("removeAllTagSelectors")) {
				return rdCommand.removeAllTagSelectors();
			}
			else if (command.equals("getTagSelector")) {
				return rdCommand.getTagSelector(params[0].getString());
			}
			else if (command.equals("getAllTagSelectors")) {
				return rdCommand.getAllTagSelectors();
			}
			else if (command.equals("removeTagFields")) {
				TagField[] tfs = toTagFieldArray(params[0].getCollection());
				return rdCommand.removeTagFields(tfs);
			}
			else if (command.equals("removeAllTagFields")) {
				return rdCommand.removeAllTagFields();
			}
			else if (command.equals("getTagField")) {
				return rdCommand.getTagField(params[0].getString());
			}
			else if (command.equals("getAllTagFields")) {
				return rdCommand.getAllTagFields();
			}
			else if (command.equals("resetToDefaultSettings")) {
				return rdCommand.resetToDefaultSettings();
			}
			else if (command.equals("reboot")) {
				return rdCommand.reboot();
			}
			else if (command.equals("goodbye")) {
				return rdCommand.goodbye();
			}
			else if (command.equals("getReadPoint")) {
				return rdCommand.getReadPoint(params[0].getString());
			}
			else if (command.equals("getAllReadPoints")) {
				return rdCommand.getAllReadPoints();
			}
		}
		else if (object.equals("Source")) {
			SourceSerializer srcCommand = new SourceSerializerImpl(getNextId(), target);
			if (command.equals("create")) {
				return srcCommand.create(params[0].getString());
			}
			else if (command.equals("getName")) {
				return srcCommand.getName();
			}
			else if (command.equals("isFixed")) {
				return srcCommand.isFixed();
			}
			else if (command.equals("addReadPoints")) {
				ReadPoint[] rps = toReadPointArray(params[0].getCollection());
				return srcCommand.addReadPoints(rps);
			}
			else if (command.equals("removeReadPoints")) {
				ReadPoint[] rps = toReadPointArray(params[0].getCollection());
				return srcCommand.removeReadPoints(rps);
			}
			else if (command.equals("removeAllReadPoints")) {
				return srcCommand.removeAllReadPoints();
			}
			else if (command.equals("getReadPoint")) {
				return srcCommand.getReadPoint(params[0].getString());
			}
			else if (command.equals("getAllReadPoints")) {
				return srcCommand.getAllReadPoints();
			}
			else if (command.equals("addReadTriggers")) {
				Trigger[] rtrg = toTriggerArray(params[0].getCollection());
				return srcCommand.addReadTriggers(rtrg);
			}
			else if (command.equals("removeReadTriggers")) {
				Trigger[] rtrgs = toTriggerArray(params[0].getCollection());
				return srcCommand.removeReadTriggers(rtrgs);
			}
			else if (command.equals("removeAllReadTriggers")) {
				return srcCommand.removeAllReadTriggers();
			}
			else if (command.equals("getReadTrigger")) {
				return srcCommand.getReadTrigger(params[0].getString());
			}
			else if (command.equals("getAllReadTriggers")) {
				return srcCommand.getAllReadTriggers();
			}
			else if (command.equals("addTagSelectors")) {
				TagSelector[] tss = toTagSelectorArray(params[0].getCollection());
				return srcCommand.addTagSelectors(tss);
			}
			else if (command.equals("removeTagSelectors")) {
				TagSelector[] tss = toTagSelectorArray(params[0].getCollection());
				return srcCommand.removeTagSelectors(tss);
			}
			else if (command.equals("removeAllTagSelectors")) {
				return srcCommand.removeAllTagSelectors();
			}
			else if (command.equals("getTagSelector")) {
				return srcCommand.getTagSelector(params[0].getString());
			}
			else if (command.equals("getAllTagSelectors")) {
				return srcCommand.getAllTagSelectors();
			}
			else if (command.equals("getGlimpsedTimeout")) {
				return srcCommand.getGlimpsedTimeout();
			}
			else if (command.equals("setGlimpsedTimeout")) {
				return srcCommand.setGlimpsedTimeout(params[0].getInt());
			}
			else if (command.equals("getObservedThreshold")) {
				return srcCommand.getObservedThreshold();
			}
			else if (command.equals("setObservedThreshold")) {
				return srcCommand.setObservedThreshold(params[0].getInt());
			}
			else if (command.equals("getObservedTimeout")) {
				return srcCommand.getObservedTimeout();
			}
			else if (command.equals("setObservedTimeout")) {
				return srcCommand.setObservedTimeout(params[0].getInt());
			}
			else if (command.equals("getLostTimeout")) {
				return srcCommand.getLostTimeout();
			}
			else if (command.equals("setLostTimeout")) {
				return srcCommand.setLostTimeout(params[0].getInt());
			}
			else if (command.equals("rawReadIDs")) {
				SourceCommand.RawReadIDs r = cmdFactory.createSourceCommandRawReadIDs();
				if (params.length > 0) { //optional parameter is set
					try{
						DataSelector ds = DataSelector.create(params[0].getString());
						return srcCommand.rawReadIDs(ds);
					} catch (Exception e) {}
				} else {
					return srcCommand.rawReadIDs(null);
				}
				
			}
			else if (command.equals("readIDs")) {
				SourceCommand.ReadIDs r = cmdFactory.createSourceCommandReadIDs();
				if (params.length > 0) { //optional parameter is set
					try	{
						DataSelector ds = DataSelector.create(params[0].getString());
						return srcCommand.readIDs(ds);
					} catch (Exception e) {}
				} else {
					return srcCommand.readIDs(null);
				}
				
			}
			else if (command.equals("read")) {
				SourceCommand.Read r = cmdFactory.createSourceCommandRead();
				if (params.length > 0) { //optional parameter is set
					try {
						DataSelector ds = DataSelector.create(params[0].getString());
						return srcCommand.read(ds, null); //TODO: set Passwords
					} catch (Exception e) {}
				} else {
					return srcCommand.read(null, null);
				}
			}
			else if (command.equals("writeID")) {

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -