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

📄 commanddispatcher.java

📁 关于 RFID 读写器的相关内容
💻 JAVA
📖 第 1 页 / 共 5 页
字号:
					.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 + -