summaryrefslogtreecommitdiff
path: root/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractAssocArrayInfobox.java
diff options
context:
space:
mode:
Diffstat (limited to 'mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractAssocArrayInfobox.java')
-rw-r--r--mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractAssocArrayInfobox.java299
1 files changed, 0 insertions, 299 deletions
diff --git a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractAssocArrayInfobox.java b/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractAssocArrayInfobox.java
deleted file mode 100644
index 9a4536e6..00000000
--- a/mocca-1.2.11/bkucommon/src/main/java/at/gv/egiz/bku/slcommands/impl/AbstractAssocArrayInfobox.java
+++ /dev/null
@@ -1,299 +0,0 @@
-/*
- * Copyright 2008 Federal Chancellery Austria and
- * Graz University of Technology
- *
- * 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 at.gv.egiz.bku.slcommands.impl;
-
-import java.io.ByteArrayOutputStream;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Pattern;
-
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import at.buergerkarte.namespaces.securitylayer._1.InfoboxAssocArrayPairType;
-import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadDataAssocArrayType;
-import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadParamsAssocArrayType;
-import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadRequestType;
-import at.buergerkarte.namespaces.securitylayer._1.ObjectFactory;
-import at.buergerkarte.namespaces.securitylayer._1.XMLContentType;
-import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadParamsAssocArrayType.ReadKeys;
-import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadParamsAssocArrayType.ReadPairs;
-import at.buergerkarte.namespaces.securitylayer._1.InfoboxReadParamsAssocArrayType.ReadValue;
-import at.gv.egiz.bku.slcommands.InfoboxReadResult;
-import at.gv.egiz.bku.slcommands.SLCommandContext;
-import at.gv.egiz.bku.slcommands.SLMarshallerFactory;
-import at.gv.egiz.bku.slexceptions.SLCommandException;
-
-/**
- * An abstract base class for {@link Infobox} implementations of type associative array.
- *
- * @author mcentner
- */
-public abstract class AbstractAssocArrayInfobox extends AbstractInfoboxImpl
- implements AssocArrayInfobox {
-
- /**
- * Logging facility.
- */
- private static Log log = LogFactory.getLog(AbstractAssocArrayInfobox.class);
-
- /**
- * The search string pattern.
- */
- public static final String SEARCH_STRING_PATTERN = "(.&&[^/])+(/.&&[^/])*";
-
- /**
- * @return the keys available in this infobox.
- */
- public abstract String[] getKeys();
-
- /**
- * @return <code>true</code> if the values are XML entities, or <code>false</code> otherwise.
- */
- public abstract boolean isValuesAreXMLEntities();
-
- /**
- * Returns a key to value mapping for the given <code>keys</code>.
- *
- * @param keys a list of keys
- * @param cmdCtx the command context
- *
- * @return a key to value mapping for the given <code>keys</code>.
- *
- * @throws SLCommandException if obtaining the values fails
- */
- public abstract Map<String, Object> getValues(List<String> keys, SLCommandContext cmdCtx) throws SLCommandException;
-
- /**
- * Returns all keys that match the given <code>searchString</code>.
- *
- * @param searchString the search string
- *
- * @return all keys that match the given <code>searchString</code>
- *
- * @throws SLCommandException if the given search string is invalid
- */
- protected List<String> selectKeys(String searchString) throws SLCommandException {
-
- if ("*".equals(searchString) || "**".equals(searchString)) {
- return Arrays.asList(getKeys());
- }
-
- if (!searchString.contains("*")) {
- Arrays.asList(getKeys()).contains(searchString);
- return Collections.singletonList(searchString);
- }
-
- if (Pattern.matches(SEARCH_STRING_PATTERN, searchString)) {
-
-// for (int i = 0; i < searchString.length(); i++) {
-// int codePoint = searchString.codePointAt(i);
-//
-// }
-
- // TODO : build pattern
- return Collections.emptyList();
- } else {
- log.info("Got invalid search string '" + searchString + "'");
- throw new SLCommandException(4010);
- }
-
- }
-
- /**
- * Read all keys specified by <code>readKeys</code>.
- *
- * @param readKeys
- * the ReadKeys element
- * @param cmdCtx
- * the command context
- * @return a corresponding InfoboxReadResult
- *
- * @throws SLCommandException
- * if the ReadKeys element is invalid or obtaining the corresponding
- * values fails
- */
- protected InfoboxReadResult readKeys(ReadKeys readKeys, SLCommandContext cmdCtx) throws SLCommandException {
-
- List<String> selectedKeys = selectKeys(readKeys.getSearchString());
-
- if (readKeys.isUserMakesUnique() && selectedKeys.size() > 1) {
- log.info("UserMakesUnique not supported");
- // TODO: give more specific error message
- throw new SLCommandException(4010);
- }
-
- ObjectFactory objectFactory = new ObjectFactory();
-
- InfoboxReadDataAssocArrayType infoboxReadDataAssocArrayType = objectFactory
- .createInfoboxReadDataAssocArrayType();
-
- List<String> keys = infoboxReadDataAssocArrayType.getKey();
- keys.addAll(selectedKeys);
-
- return new InfoboxReadResultImpl(infoboxReadDataAssocArrayType);
-
- }
-
- /**
- * Read all pairs specified by <code>readPairs</code>.
- *
- * @param readPairs
- * the readPairs element
- * @param cmdCtx
- * the command context
- * @return a corresponding InfoboxReadResult
- *
- * @throws SLCommandException
- * if the ReadPairs element is invalid or obtaining the corresponding
- * values fails
- */
- protected InfoboxReadResult readPairs(ReadPairs readPairs, SLCommandContext cmdCtx) throws SLCommandException {
-
- if (readPairs.isValuesAreXMLEntities() && !isValuesAreXMLEntities()) {
- log.info("Got valuesAreXMLEntities=" + readPairs.isValuesAreXMLEntities() + " but infobox type is binary.");
- throw new SLCommandException(4010);
- }
-
- List<String> selectedKeys = selectKeys(readPairs.getSearchString());
-
- if (readPairs.isUserMakesUnique() && selectedKeys.size() > 1) {
- log.info("UserMakesUnique not supported");
- // TODO: give more specific error message
- throw new SLCommandException(4010);
- }
-
- return new InfoboxReadResultImpl(marshallPairs(selectedKeys, getValues(
- selectedKeys, cmdCtx), readPairs.isValuesAreXMLEntities()));
- }
-
- /**
- * Read the value specified by <code>readPairs</code>.
- *
- * @param readValue
- * the readValue element
- * @param cmdCtx
- * the command context
- * @return a corresponding InfoboxReadResult
- *
- * @throws SLCommandException
- * if the ReadValue element is invalid or obtaining the corresponding
- * values fails
- */
- protected InfoboxReadResult readValue(ReadValue readValue, SLCommandContext cmdCtx) throws SLCommandException {
-
- if (readValue.isValueIsXMLEntity() && !isValuesAreXMLEntities()) {
- log.info("Got valuesAreXMLEntities=" + readValue.isValueIsXMLEntity() + " but infobox type is binary.");
- throw new SLCommandException(4010);
- }
-
- List<String> selectedKeys;
-
- if (Arrays.asList(getKeys()).contains(readValue.getKey())) {
- selectedKeys = Collections.singletonList(readValue.getKey());
- } else {
- selectedKeys = Collections.emptyList();
- }
-
- return new InfoboxReadResultImpl(marshallPairs(selectedKeys, getValues(
- selectedKeys, cmdCtx), readValue.isValueIsXMLEntity()));
-
- }
-
- protected InfoboxReadDataAssocArrayType marshallPairs(List<String> selectedKeys, Map<String, Object> values, boolean areXMLEntities) throws SLCommandException {
-
- ObjectFactory objectFactory = new ObjectFactory();
-
- InfoboxReadDataAssocArrayType infoboxReadDataAssocArrayType = objectFactory.createInfoboxReadDataAssocArrayType();
-
- for (String key : selectedKeys) {
- InfoboxAssocArrayPairType infoboxAssocArrayPairType = objectFactory.createInfoboxAssocArrayPairType();
- infoboxAssocArrayPairType.setKey(key);
-
- Object value = values.get(key);
- if (areXMLEntities) {
- if (value instanceof byte[]) {
- log.info("Got valuesAreXMLEntities=" + areXMLEntities + " but infobox type is binary.");
- throw new SLCommandException(4122);
- } else {
- XMLContentType contentType = objectFactory.createXMLContentType();
- contentType.getContent().add(value);
- infoboxAssocArrayPairType.setXMLContent(contentType);
- }
- } else {
- infoboxAssocArrayPairType.setBase64Content((value instanceof byte[]) ? (byte[]) value : marshallValue(value));
- }
-
- infoboxReadDataAssocArrayType.getPair().add(infoboxAssocArrayPairType);
- }
-
- return infoboxReadDataAssocArrayType;
-
- }
-
- protected byte[] marshallValue(Object jaxbElement) throws SLCommandException {
-
- Marshaller marshaller = SLMarshallerFactory.getInstance().createMarshaller(false);
- ByteArrayOutputStream result = new ByteArrayOutputStream();
- try {
- marshaller.marshal(jaxbElement, result);
- } catch (JAXBException e) {
- log.info("Failed to marshall infobox content.", e);
- throw new SLCommandException(4122);
- }
-
- return result.toByteArray();
-
- }
-
- @Override
- public InfoboxReadResult read(InfoboxReadRequestType req,
- SLCommandContext cmdCtx) throws SLCommandException {
-
- InfoboxReadParamsAssocArrayType assocArrayParameters = req
- .getAssocArrayParameters();
-
- if (assocArrayParameters == null) {
- log.info("Infobox type is AssocArray but got no AssocArrayParameters.");
- throw new SLCommandException(4010);
- }
-
- if (assocArrayParameters.getReadKeys() != null) {
- return readKeys(assocArrayParameters.getReadKeys(), cmdCtx);
- }
-
- if (assocArrayParameters.getReadPairs() != null) {
- return readPairs(assocArrayParameters.getReadPairs(), cmdCtx);
- }
-
- // ReadValue
- if (assocArrayParameters.getReadValue() != null) {
- return readValue(assocArrayParameters.getReadValue(), cmdCtx);
- }
-
- log
- .info("Infobox type is AssocArray but got invalid AssocArrayParameters.");
- throw new SLCommandException(4010);
-
- }
-
-}