/*
* #%L
* =====================================================
* _____ _ ____ _ _ _ _
* |_ _|_ __ _ _ ___| |_ / __ \| | | | ___ | | | |
* | | | '__| | | / __| __|/ / _` | |_| |/ __|| |_| |
* | | | | | |_| \__ \ |_| | (_| | _ |\__ \| _ |
* |_| |_| \__,_|___/\__|\ \__,_|_| |_||___/|_| |_|
* \____/
*
* =====================================================
*
* Hochschule Hannover
* (University of Applied Sciences and Arts, Hannover)
* Faculty IV, Dept. of Computer Science
* Ricklinger Stadtweg 118, 30459 Hannover, Germany
*
* Email: trust@f4-i.fh-hannover.de
* Website: http://trust.f4.hs-hannover.de/
*
* This file is part of visitmeta-visualization, version 0.6.0,
* implemented by the Trust@HsH research group at the Hochschule Hannover.
* %%
* Copyright (C) 2012 - 2016 Trust@HsH
* %%
* 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.
* #L%
*/
package de.hshannover.f4.trust.visitmeta.util;
import org.w3c.dom.Document;
import de.hshannover.f4.trust.visitmeta.IfmapStrings;
import de.hshannover.f4.trust.visitmeta.interfaces.Identifier;
import de.hshannover.f4.trust.visitmeta.interfaces.Propable;
/**
* Utility class that helps extracting information of extended identifier objects.
*
* @author Bastian Hellmann
*
*/
public class ExtendedIdentifierHelper {
/**
* Private constructor, as the the class only contains static methods.
*/
private ExtendedIdentifierHelper() {
}
/**
* Checks whether a given {@link Identifier} is an extended identifier or not.
* Searches for the <i>type</i> attribute and checks if it is <i>other</i> or not.
*
* @param identifier
* the {@link Identifier} oject
* @return true if the {@link Identifier} object is an extended identifier
*/
public static boolean isExtendedIdentifier(Identifier identifier) {
IdentifierWrapper wrapper = IdentifierHelper.identifier(identifier);
String type = wrapper.getValueForXpathExpressionOrElse("@"
+ IfmapStrings.IDENTITY_ATTR_TYPE, "type"); // type
if (type.equals("other")) {
return true;
} else {
return false;
}
}
/**
* Extracts the inner type name of an extended identifier.
* Searches for the <i>name</i> attribute.
* Tries to find the first <i>;</i>; if found, it returns the string starting after that <i>;</i> and ending before
* the first single whitespace character.
*
* @param identifier
* the {@link Identifier} oject
* @return the <i>inner</i< typename of the extended identifier
*/
public static String getExtendedIdentifierInnerTypeName(Identifier identifier) {
IdentifierWrapper wrapper = IdentifierHelper.identifier(identifier);
String name = wrapper.getValueForXpathExpressionOrElse("@"
+ IfmapStrings.IDENTITY_ATTR_NAME, "name"); // name
int idxFirstSemicolon = name.indexOf(";");
if (idxFirstSemicolon != -1) {
return (name.substring(name.indexOf(";")
+ 1,
name.indexOf(" ")));
}
return "";
}
public static Document getDocument(Propable propable) {
if (propable instanceof Identifier) {
Identifier i = (Identifier) propable;
if (isExtendedIdentifier(i)) {
IdentifierWrapper wrapper = IdentifierHelper.identifier(i);
String name = wrapper.getValueForXpathExpressionOrElse("@"
+ IfmapStrings.IDENTITY_ATTR_NAME, "name");
return DocumentUtils.parseEscapedXmlString(name);
}
}
return null;
}
}