From 45a7020126ca65cd9d86e554225bc73e902b6882 Mon Sep 17 00:00:00 2001 From: Robert von Burg Date: Mon, 13 Jan 2014 19:12:04 +0100 Subject: [PATCH] [New] Implemented Add* and RemoveParameterService and Command --- .../parameter/AddParameterCommand.java | 74 +++++++++++++++++++ .../parameter/RemoveParameterCommand.java | 72 ++++++++++++++++++ .../parameter/AddParameterService.java | 60 +++++++++++++++ .../parameter/RemoveParameterService.java | 59 +++++++++++++++ 4 files changed, 265 insertions(+) create mode 100644 src/main/java/li/strolch/command/parameter/AddParameterCommand.java create mode 100644 src/main/java/li/strolch/command/parameter/RemoveParameterCommand.java create mode 100644 src/main/java/li/strolch/service/parameter/AddParameterService.java create mode 100644 src/main/java/li/strolch/service/parameter/RemoveParameterService.java diff --git a/src/main/java/li/strolch/command/parameter/AddParameterCommand.java b/src/main/java/li/strolch/command/parameter/AddParameterCommand.java new file mode 100644 index 000000000..f1e162ba8 --- /dev/null +++ b/src/main/java/li/strolch/command/parameter/AddParameterCommand.java @@ -0,0 +1,74 @@ +/* + * 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.parameter; + +import java.text.MessageFormat; + +import ch.eitchnet.utils.dbc.DBC; +import li.strolch.agent.api.ComponentContainer; +import li.strolch.model.ParameterizedElement; +import li.strolch.model.parameter.Parameter; +import li.strolch.persistence.api.StrolchPersistenceException; +import li.strolch.persistence.api.StrolchTransaction; +import li.strolch.service.api.Command; + +/** + * @author Robert von Burg + */ +public class AddParameterCommand extends Command { + + private ParameterizedElement element; + private Parameter parameter; + + /** + * @param container + * @param tx + */ + public AddParameterCommand(ComponentContainer container, StrolchTransaction tx) { + super(container, tx); + } + + /** + * @param element + * the element to set + */ + public void setElement(ParameterizedElement element) { + this.element = element; + } + + /** + * @param parameter + * the parameter to set + */ + public void setParameter(Parameter parameter) { + this.parameter = parameter; + } + + @Override + public void doCommand() { + DBC.PRE.assertNotNull("Element may not be null!", element); + DBC.PRE.assertNotNull("Parameter may not be null!", parameter); + + if (element.hasParameter(this.parameter.getId())) { + String msg = "The Parameter {0} already exists on element {1}"; + msg = MessageFormat.format(msg, parameter.getId(), element.getLocator()); + throw new StrolchPersistenceException(msg); + } + + this.element.addParameter(parameter); + } + +} diff --git a/src/main/java/li/strolch/command/parameter/RemoveParameterCommand.java b/src/main/java/li/strolch/command/parameter/RemoveParameterCommand.java new file mode 100644 index 000000000..7b45ee04b --- /dev/null +++ b/src/main/java/li/strolch/command/parameter/RemoveParameterCommand.java @@ -0,0 +1,72 @@ +/* + * 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.parameter; + +import java.text.MessageFormat; + +import li.strolch.agent.api.ComponentContainer; +import li.strolch.model.ParameterizedElement; +import li.strolch.persistence.api.StrolchPersistenceException; +import li.strolch.persistence.api.StrolchTransaction; +import li.strolch.service.api.Command; +import ch.eitchnet.utils.dbc.DBC; + +/** + * @author Robert von Burg + */ +public class RemoveParameterCommand extends Command { + + private ParameterizedElement element; + private String parameterId; + + /** + * @param container + * @param tx + */ + public RemoveParameterCommand(ComponentContainer container, StrolchTransaction tx) { + super(container, tx); + } + + /** + * @param element + * the element to set + */ + public void setElement(ParameterizedElement element) { + this.element = element; + } + + /** + * @param parameterId + * the parameterId to set + */ + public void setParameterId(String parameterId) { + this.parameterId = parameterId; + } + + @Override + public void doCommand() { + DBC.PRE.assertNotNull("Element may not be null!", element); + DBC.PRE.assertNotEmpty("ParameterId must be set!", parameterId); + + if (!element.hasParameter(this.parameterId)) { + String msg = "The Parameter {0} can not be removed as it does not exist on element {1}"; + msg = MessageFormat.format(msg, parameterId, element.getLocator()); + throw new StrolchPersistenceException(msg); + } + + this.element.removeParameter(parameterId); + } +} diff --git a/src/main/java/li/strolch/service/parameter/AddParameterService.java b/src/main/java/li/strolch/service/parameter/AddParameterService.java new file mode 100644 index 000000000..57670a7fb --- /dev/null +++ b/src/main/java/li/strolch/service/parameter/AddParameterService.java @@ -0,0 +1,60 @@ +/* + * 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.service.parameter; + +import li.strolch.command.parameter.AddParameterCommand; +import li.strolch.model.Locator; +import li.strolch.model.ParameterizedElement; +import li.strolch.model.parameter.Parameter; +import li.strolch.persistence.api.StrolchTransaction; +import li.strolch.service.api.AbstractService; +import li.strolch.service.api.ServiceArgument; +import li.strolch.service.api.ServiceResult; + +/** + * @author Robert von Burg + */ +public class AddParameterService extends AbstractService { + + private static final long serialVersionUID = 1L; + + @Override + protected ServiceResult getResultInstance() { + return new ServiceResult(); + } + + @Override + protected ServiceResult internalDoService(AddParameterArg arg) { + + try (StrolchTransaction tx = openTx(arg.realm)) { + + ParameterizedElement element = tx.findElement(arg.locator); + + AddParameterCommand command = new AddParameterCommand(getContainer(), tx); + command.setElement(element); + command.setParameter(arg.parameter); + command.doCommand(); + } + + return ServiceResult.success(); + } + + public static class AddParameterArg extends ServiceArgument { + private static final long serialVersionUID = 1L; + public Locator locator; + public Parameter parameter; + } +} diff --git a/src/main/java/li/strolch/service/parameter/RemoveParameterService.java b/src/main/java/li/strolch/service/parameter/RemoveParameterService.java new file mode 100644 index 000000000..a274a88e8 --- /dev/null +++ b/src/main/java/li/strolch/service/parameter/RemoveParameterService.java @@ -0,0 +1,59 @@ +/* + * 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.service.parameter; + +import li.strolch.command.parameter.RemoveParameterCommand; +import li.strolch.model.Locator; +import li.strolch.model.ParameterizedElement; +import li.strolch.persistence.api.StrolchTransaction; +import li.strolch.service.api.AbstractService; +import li.strolch.service.api.ServiceArgument; +import li.strolch.service.api.ServiceResult; + +/** + * @author Robert von Burg + */ +public class RemoveParameterService extends AbstractService { + + private static final long serialVersionUID = 1L; + + @Override + protected ServiceResult getResultInstance() { + return new ServiceResult(); + } + + @Override + protected ServiceResult internalDoService(AddParameterArg arg) { + + try (StrolchTransaction tx = openTx(arg.realm)) { + + ParameterizedElement element = tx.findElement(arg.locator); + + RemoveParameterCommand command = new RemoveParameterCommand(getContainer(), tx); + command.setElement(element); + command.setParameterId(arg.parameterId); + command.doCommand(); + } + + return ServiceResult.success(); + } + + public static class AddParameterArg extends ServiceArgument { + private static final long serialVersionUID = 1L; + public Locator locator; + public String parameterId; + } +}