📄 commanddispatcher.java
字号:
.createTriggerListReturnType();
TriggerListParamType triggerListItems = replyFactory
.createTriggerListParamType();
TriggerListParamType.List list = replyFactory
.createTriggerListParamTypeList();
List valueList = list.getValue();
for (int i = 0; i < triggers.length; i++) {
valueList.add(triggers[i].getName());
}
triggerListItems.setList(list);
triggerListReturn.setReturnValue(triggerListItems);
reply.setGetAllTriggers(triggerListReturn);
}
else if (command.getRemoveTagSelectors() != null) {
log.debug("Calling ReaderDevice.removeTagSelectors()");
org.fosstrak.reader.rprm.core.msg.command.TagSelectorListParamType.List valueElems = command
.getRemoveTagSelectors().getSelectors().getList();
List valueList = valueElems.getValue(); // List of strings with
// the tag selector
// names
/*
* aquiring phase - fetch all tag selectors from the RD if a tag
* selector doesn't exist an exception then just this one should
* be ignored (all others should be removed).
*/
TagSelector[] rdTagSelectors = new TagSelector[valueList.size()];
int index = 0;
for (Iterator it = valueList.iterator(); it.hasNext();) {
String tagSelectorName = (String) it.next();
try {
TagSelector tagSelector = readerDevice
.getTagSelector(tagSelectorName);
rdTagSelectors[index] = tagSelector;
index++;
} catch (ReaderProtocolException e) {
// TagSelector not found ignore it
}
}
// call removeTagSelectors on RD
readerDevice.removeTagSelectors(rdTagSelectors);
// return void
NoParamType voidType = replyFactory.createNoParamType();
reply.setRemoveTagSelectors(voidType);
}
else if (command.getRemoveAllTagSelectors() != null) {
log.debug("Calling ReaderDevice.removeAllTagSelectors()");
readerDevice.removeAllTagSelectors();
// return void
NoParamType voidType = replyFactory.createNoParamType();
reply.setRemoveAllTagSelectors(voidType);
}
else if (command.getGetTagSelector() != null) {
log.debug("Calling ReaderDevice.getTagSelector()");
TagSelector tagSelector = readerDevice.getTagSelector(command
.getGetTagSelector().getName());
TagSelectorReturnType tagSelectorReturn = replyFactory
.createTagSelectorReturnType();
tagSelectorReturn.setReturnValue(tagSelector.getName());
reply.setGetTagSelector(tagSelectorReturn);
}
else if (command.getGetAllTagSelectors() != null) {
log.debug("Calling ReaderDevice.getAllTagSelectors()");
TagSelector[] tagSelectors = readerDevice.getAllTagSelectors();
TagSelectorListReturnType tagSelectorListReturn = replyFactory
.createTagSelectorListReturnType();
TagSelectorListParamType tagSelectorListItems = replyFactory
.createTagSelectorListParamType();
TagSelectorListParamType.List list = replyFactory
.createTagSelectorListParamTypeList();
List valueList = list.getValue();
for (int i = 0; i < tagSelectors.length; i++) {
valueList.add(tagSelectors[i].getName());
}
tagSelectorListItems.setList(list);
tagSelectorListReturn.setReturnValue(tagSelectorListItems);
reply.setGetAllTagSelectors(tagSelectorListReturn);
}
else if (command.getRemoveTagFields() != null) {
log.debug("Calling ReaderDevice.removeTagFields()");
org.fosstrak.reader.rprm.core.msg.command.TagFieldListParamType.List valueElems = command
.getRemoveTagFields().getFields().getList();
List valueList = valueElems.getValue(); // List of strings with
// the tag field names
/*
* aquiring phase - fetch all tag fields from the RD if a tag
* fields doesn't exist an exception then just this one should
* be ignored (all others should be removed).
*/
TagField[] rdTagFields = new TagField[valueList.size()];
int index = 0;
for (Iterator it = valueList.iterator(); it.hasNext();) {
String tagFieldName = (String) it.next();
try {
TagField tagField = readerDevice
.getTagField(tagFieldName);
rdTagFields[index] = tagField;
index++;
} catch (ReaderProtocolException e) {
// TagField not found ignore it
}
}
// call removeTagFields on RD
readerDevice.removeTagFields(rdTagFields);
// return void
NoParamType voidType = replyFactory.createNoParamType();
reply.setRemoveTagFields(voidType);
}
else if (command.getRemoveAllTagFields() != null) {
log.debug("Calling ReaderDevice.removeAllTagFields()");
readerDevice.removeAllTagFields();
// return void
NoParamType voidType = replyFactory.createNoParamType();
reply.setRemoveAllTagFields(voidType);
}
else if (command.getGetTagField() != null) {
log.debug("Calling ReaderDevice.getTagField()");
TagField tagField = readerDevice.getTagField(command
.getGetTagField().getName());
TagFieldReturnType tagFieldReturn = replyFactory
.createTagFieldReturnType();
tagFieldReturn.setReturnValue(tagField.getName());
reply.setGetTagField(tagFieldReturn);
}
else if (command.getGetAllTagFields() != null) {
log.debug("Calling ReaderDevice.getAllTagFields()");
TagField[] tagFields = readerDevice.getAllTagFields();
TagFieldListReturnType tagFieldListReturn = replyFactory
.createTagFieldListReturnType();
TagFieldListParamType tagFieldListItems = replyFactory
.createTagFieldListParamType();
TagFieldListParamType.List list = replyFactory
.createTagFieldListParamTypeList();
List valueList = list.getValue();
for (int i = 0; i < tagFields.length; i++) {
valueList.add(tagFields[i].getName());
}
tagFieldListItems.setList(list);
tagFieldListReturn.setReturnValue(tagFieldListItems);
reply.setGetAllTagFields(tagFieldListReturn);
}
else if (command.getResetToDefaultSettings() != null) {
log.debug("Calling ReaderDevice.resetToDefaultSettings()");
readerDevice.resetToDefaultSettings();
msgLayer.reset();
NoParamType voidType = replyFactory.createNoParamType();
reply.setResetToDefaultSettings(voidType);
}
else if (command.getReboot() != null) {
log.debug("Calling ReaderDevice.reboot()");
readerDevice.reboot();
reboot();
NoParamType voidType = replyFactory.createNoParamType();
reply.setReboot(voidType);
}
else if (command.getGoodbye() != null) {
log.debug("Calling ReaderDevice.goodbye()");
NoParamType voidType = replyFactory.createNoParamType();
reply.setGoodbye(voidType);
/*
* set a close request on the connection. The client should then
* be implicitly removed from <code>Clients</code> by closing
* the connection.
*/
im.getConnection().requestClose();
return reply;
}
else if (command.getGetReadPoint() != null) {
log.debug("Calling ReaderDevice.getReadPoint()");
ReadPoint readPoint = readerDevice.getReadPoint(command
.getGetReadPoint().getName());
ReadPointReturnType readPointReturn = replyFactory
.createReadPointReturnType();
readPointReturn.setReturnValue(readPoint.getName());
reply.setGetReadPoint(readPointReturn);
}
else if (command.getGetAllReadPoints() != null) {
log.debug("Calling ReaderDevice.getAllReadPoints()");
ReadPoint[] readPoints = readerDevice.getAllReadPoints();
ReadPointListReturnType readPointListReturn = replyFactory
.createReadPointListReturnType();
ReadPointListParamType readPointListItems = replyFactory
.createReadPointListParamType();
ReadPointListParamType.List list = replyFactory
.createReadPointListParamTypeList();
List valueList = list.getValue();
for (int i = 0; i < readPoints.length; i++) {
valueList.add(readPoints[i].getName());
}
readPointListItems.setList(list);
readPointListReturn.setReturnValue(readPointListItems);
reply.setGetAllReadPoints(readPointListReturn);
}
return reply;
}
/**
* Executes a command on the Source object.
*
* @param command
* The command to be executed.
* @param targetName
* The unique identifier (object name) of a <code>Source</code>
* instance or <code>null</code> if it is a static method.
* @param im
* The <code>IncomingMessage</code> that caused this command.
* @return The reply of a command execution.
* @throws ReaderProtocolException
* Exceptions from the Trigger
*/
private SourceReply executeCommand(final SourceCommand command,
final String targetName, final IncomingMessage im)
throws ReaderProtocolException {
Source source = null;
try {
log.debug("Calling a Source Command.");
SourceReply reply = replyFactory.createSourceReply();
if (command.getCreate() != null) {
log.debug("Calling Source.create()");
source = Source.create(command.getCreate().getName(),
readerDevice);
SourceReturnType sourceReturn = replyFactory
.createSourceReturnType();
sourceReturn.setReturnValue(source.getName());
reply.setCreate(sourceReturn);
}
else if (command.getGetName() != null) {
log.debug("Calling Source.getName()");
// Irrelevant command, simply return the targetName
StringReturnType stringReturn = replyFactory
.createStringReturnType();
stringReturn.setReturnValue(targetName);
reply.setGetName(stringReturn);
}
else {
// Check the existence of the target
if (targetName == null) {
throw new ReaderProtocolException(
MessagingConstants.ERROR_SOURCE_NOT_FOUND_STR,
MessagingConstants.ERROR_SOURCE_NOT_FOUND);
} else {
source = readerDevice.getSource(targetName);
}
if (command.getIsFixed() != null) {
log.debug("Calling Source.isFixed()");
BooleanReturnType boolReturn = replyFactory
.createBooleanReturnType();
boolReturn.setReturnValue(source.isFixed());
reply.setIsFixed(boolReturn);
}
else if (command.getAddReadPoints() != null) {
log.debug("Calling Source.addReadPoints()");
org.fosstrak.reader.rprm.core.msg.command.ReadPointListParamType.List valueElems = command
.getAddReadPoints().getReadPoints().getList();
List valueList = valueElems.getValue(); // List of strings
// with the read
// points names
/*
* aquiring phase - fetch all read points from the RD if a
* read point doesn't exist an exception is thrown in the RD
* and we throw this exception up to the dispatch method. So
* either all triggers are added or nothing.
*/
ReadPoint[] rdReadPoints = new ReadPoint[valueList.size()];
int index = 0;
for (Iterator it = valueList.iterator(); it.hasNext();) {
String readPointName = (String) it.next();
ReadPoint readPoint = readerDevice
.getReadPoint(readPointName);
rdReadPoints[index] = readPoint;
index++;
}
// call addReadPoints on RD
source.addReadPoints(rdReadPoints);
// return void
NoParamType voidType = replyFactory.createNoParamType();
reply.setAddReadPoints(voidType);
}
else if (command.getRemoveReadPoints() != null) {
log.debug("Calling Source.removeReadPoints()");
org.fosstrak.reader.rprm.core.msg.command.ReadPointListParamType.List valueElems = command
.getRemoveReadPoints().getReadPoints().getList();
List valueList = valueElems.getValue(); // List of strings
// with the source
// names
/*
* aquiring phase - fetch all read points from the RD if a
* read point doesn't exist an exception then just this one
* should be ignored (all others should be removed).
*/
ReadPoint[] rdReadPoints = new ReadPoint[valueList.size()];
int index = 0;
for (Iterator it = valueList.iterator(); it.hasNext();) {
String readPointName = (String) it.next();
try {
ReadPoint readPoint = readerDevice
.getReadPoint(readPointName);
rdReadPoints[index] = readPoint;
index++;
} catch (ReaderProtocolException e) {
// readpoint not found ignore it
}
}
// call removeReadPoints on RD
source.removeReadPoints(rdReadPoints);
// return void
NoParamType voidType = replyFactory.createNoParamType();
reply.setRemoveReadPoints(voidType);
}
else if (command.getRemoveAllReadPoints() != null) {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -