All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.apache.stanbol.entityhub.core.impl.EntityWrapper Maven / Gradle / Ivy

/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements.  See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You 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 org.apache.stanbol.entityhub.core.impl;

import java.util.Date;

import org.apache.stanbol.entityhub.servicesapi.defaults.NamespaceEnum;
import org.apache.stanbol.entityhub.servicesapi.model.Entity;
import org.apache.stanbol.entityhub.servicesapi.model.Representation;

/**
 * Abstract super class for all Wrappers over Entities managed by the Entityhub. 
 * Provides also getter and setter for some general purpose metadata.
 * @author Rupert Westenthaler
 */
public abstract class EntityWrapper {
    
    protected final Entity wrappedEntity;
    public EntityWrapper(Entity entity) {
        if(entity == null){
            throw new IllegalArgumentException("The parsed Entity MUST NOT be NULL");
        }
        this.wrappedEntity = entity;
    }
    /**
     * Getter for the wrapped Entity
     * @return the wrapped entity
     */
    public final Entity getWrappedEntity() {
        return wrappedEntity;
    }
    
    /**
     * Setter for the creation date of this mapping.

* Note this is store in the metadata. * @param date the date */ public final void setCreated(Date date) { if(date != null){ wrappedEntity.getMetadata().set(NamespaceEnum.dcTerms+"created", date); } } /** * Getter for the creation date of this mapping * TODO: decide if that should be stored in the data or the metadata * @return the creation date. */ public final Date getCreated() { return wrappedEntity.getMetadata().getFirst(NamespaceEnum.dcTerms+"created", Date.class); } /** * Setter for the modified date (replaces existing values) * @param date the new date */ public void setModified(Date date) { if(date != null){ wrappedEntity.getMetadata().set(NamespaceEnum.dcTerms+"modified", date); } } /** * Getter for the last modified date * @return the date of the last modification */ public final Date getModified() { return wrappedEntity.getMetadata().getFirst(NamespaceEnum.dcTerms+"modified", Date.class); } /** * Adds a link to a contributor (e.g. a site where some information where * imported) * @param reference the contributor */ public final void addContributorLink(String reference) { if(reference != null && !reference.isEmpty()){ wrappedEntity.getMetadata().addReference(NamespaceEnum.dcTerms+"contributor", reference); } } /** * Removes a reference to a contributor * @param reference the contributor */ public final void removeContributorLink(String reference) { wrappedEntity.getMetadata().removeReference(NamespaceEnum.dcTerms+"contributor", reference); } /** * Adds a name to a contributor (e.g. a site where some information where * imported) * @param name the contributor */ public final void addContributorName(String name) { if(name != null && !name.isEmpty()){ wrappedEntity.getMetadata().addNaturalText(NamespaceEnum.dcTerms+"contributor", name); } } /** * Removes a contributor * @param name the contributor */ public final void removeContributorName(String name) { wrappedEntity.getMetadata().removeNaturalText(NamespaceEnum.dcTerms+"contributor", name); } /** * Adds a reference to the creator to the entity (metadata) * @param reference the creator */ public final void addCreatorLink(String reference) { if(reference != null && !reference.isEmpty()){ wrappedEntity.getMetadata().addReference(NamespaceEnum.dcTerms+"creator", reference); } } /** * Removes a link to the creator * @param reference the creator */ public final void removeCreatorLink(String reference) { wrappedEntity.getMetadata().removeReference(NamespaceEnum.dcTerms+"creator", reference); } /** * Adds a name to the creator to the entity (metadata) * @param name the creator */ public final void addCreatorName(String name) { if(name != null && !name.isEmpty()){ wrappedEntity.getMetadata().addNaturalText(NamespaceEnum.dcTerms+"creator", name); } } /** * Removes a creator * @param name the creator */ public final void removeCreatorName(String name) { wrappedEntity.getMetadata().removeNaturalText(NamespaceEnum.dcTerms+"creator", name); } /** * Adds an attribution to the metadata of the entity * @param text the attribution * @param lang the language of the attribution (optional) */ public final void addAttributionText(String text,String lang){ if(text != null && !text.isEmpty()){ wrappedEntity.getMetadata().addNaturalText(NamespaceEnum.cc+"attributionName", text,lang); wrappedEntity.getMetadata().addReference(NamespaceEnum.rdf+"type", NamespaceEnum.cc+"Work"); } } /** * Adds an link to the attribution to the metadata of the entity * @param reference the link to the attribution */ public final void addAttributionLink(String reference){ if(reference != null && !reference.isEmpty()){ wrappedEntity.getMetadata().addReference(NamespaceEnum.cc+"attributionURL", reference); wrappedEntity.getMetadata().addReference(NamespaceEnum.rdf+"type", NamespaceEnum.cc+"Work"); } } /** * Removes all Attributions form the metadata fo the entity */ public final void removeAttributions(){ wrappedEntity.getMetadata().removeAll(NamespaceEnum.cc+"attributionURL"); wrappedEntity.getMetadata().removeAll(NamespaceEnum.cc+"attributionName"); checkForCcWork(); } /** * Adds a reference to the license to the metadata of the entity * @param reference the license */ public final void addLicenseUrl(String reference){ if(reference != null && !reference.isEmpty()){ wrappedEntity.getMetadata().addReference(NamespaceEnum.cc+"license", reference); wrappedEntity.getMetadata().addReference(NamespaceEnum.rdf+"type", NamespaceEnum.cc+"Work"); } } // public final void setLicense(String name,String text,String lang){ // if(name != null && text != null){ // //add type, relation to the entity and the license information // wrappedEntity.getMetadata().addNaturalText("", name, lang); // } else { // throw new IllegalArgumentException("Both the license name and the text MUST NOT be NULL!"); // } // } /** * Removes the license from the metadata of the entity * @param reference the license */ public final void removeLicense(String reference){ wrappedEntity.getMetadata().removeReference(NamespaceEnum.cc+"license", reference); checkForCcWork(); } /** * checks if the cc:Work type can be removed */ private void checkForCcWork(){ if(wrappedEntity.getMetadata().getFirst(NamespaceEnum.cc+"license")==null && wrappedEntity.getMetadata().getFirst(NamespaceEnum.cc+"attributionName")==null && wrappedEntity.getMetadata().getFirst(NamespaceEnum.cc+"attributionURL")==null){ wrappedEntity.getMetadata().removeReference(NamespaceEnum.rdf+"type", NamespaceEnum.cc+"Work"); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy