📄 commandfactory.java
字号:
/*
* 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 + -