/**
* Copyright (C) 2012-2017 52°North Initiative for Geospatial Open Source
* Software GmbH
*
* This program is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 as published
* by the Free Software Foundation.
*
* If the program is linked with libraries which are licensed under one of
* the following licenses, the combination of the program with the linked
* library is not considered a "derivative work" of the program:
*
* - Apache License, version 2.0
* - Apache Software License, version 1.0
* - GNU Lesser General Public License, version 3
* - Mozilla Public License, versions 1.0, 1.1 and 2.0
* - Common Development and Distribution License (CDDL), version 1.0
*
* Therefore the distribution of the program linked with libraries licensed
* under the aforementioned licenses, is permitted by the copyright holders
* if the distribution is compliant with both the GNU General Public
* License version 2 and the aforementioned licenses.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*/
package org.n52.sos.inspire;
import java.util.Collection;
import java.util.List;
import java.util.Set;
import org.n52.sos.inspire.capabilities.InspireCapabilities.InspireExtendedCapabilitiesResourceLocator;
import org.n52.sos.util.CollectionHelper;
import org.n52.sos.util.StringHelper;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
/**
* Service internal representation of INSPIRE citation
*
* @author Carsten Hollmann <c.hollmann@52north.org>
* @since 4.1.0
*
*/
public class InspireCitation implements InspireExtendedCapabilitiesResourceLocator {
/* Title 1..1 */
private String title;
/* Choice: DateOfPublication, DateOfCreation, DateOfLastRevision 1..1 */
private InspireDateOf dateOf;
/* Url 0..* */
private Set<String> urls = Sets.newHashSet();
/* ResourceLocator 0..* */
private List<InspireResourceLocator> resourceLocator = Lists.newArrayList();
/**
* constructor
*
* @param title
* the title
* @param dateOf
* the {@link InspireDateOf}
*/
public InspireCitation(String title, InspireDateOf dateOf) {
super();
setTitle(title);
setDateOf(dateOf);
}
/**
* Get the title
*
* @return the title
*/
public String getTitle() {
return title;
}
/**
* Set the title
*
* @param title
* the title to set
*/
private void setTitle(String title) {
this.title = title;
}
/**
* Check if the title is set
*
* @return <code>true</code>, if the title is set
*/
public boolean isSetTitle() {
return StringHelper.isNotEmpty(getTitle());
}
/**
* Get the {@link InspireDateOf}
*
* @return the dateOf
*/
public InspireDateOf getDateOf() {
return dateOf;
}
/**
* Set the {@link InspireDateOf}
*
* @param dateOf
* the dateOf to set
*/
private void setDateOf(InspireDateOf dateOf) {
this.dateOf = dateOf;
}
/**
* Check if the {@link InspireDateOf} is set
*
* @return <code>true</code>, if the {@link InspireDateOf} is set
*/
public boolean isSetDateOf() {
return getDateOf() != null;
}
/**
* Get the URLs
*
* @return the URLs
*/
public Set<String> getUrls() {
return urls;
}
/**
* Set the URLs, clears the existing collection
*
* @param urls
* the URLs to set
* @return this
*/
public InspireCitation setUrls(Collection<String> urls) {
if (CollectionHelper.isNotEmpty(urls)) {
getUrls().clear();
getUrls().addAll(urls);
}
return this;
}
/**
* Add the URL
*
* @param url
* the URL to add
* @return this
*/
public InspireCitation addUrl(String url) {
getUrls().add(url);
return this;
}
/**
* Check if the URLs are set
*
* @return <code>true</code>, if URLs are set
*/
public boolean isSetUrls() {
return CollectionHelper.isNotEmpty(getUrls());
}
@Override
public List<InspireResourceLocator> getResourceLocator() {
return resourceLocator;
}
@Override
public InspireExtendedCapabilitiesResourceLocator setResourceLocator(
Collection<InspireResourceLocator> resourceLocator) {
getResourceLocator().clear();
if (CollectionHelper.isNotEmpty(resourceLocator)) {
getResourceLocator().addAll(resourceLocator);
}
return this;
}
@Override
public InspireExtendedCapabilitiesResourceLocator addResourceLocator(InspireResourceLocator resourceLocator) {
getResourceLocator().add(resourceLocator);
return this;
}
@Override
public boolean isSetResourceLocators() {
return CollectionHelper.isNotEmpty(getResourceLocator());
}
@Override
public String toString() {
return String.format("%s %n[%n title=%s,%n dateOf=%s,%n urls=%s,%n resourceLocator=%s%n]", this.getClass()
.getSimpleName(), getTitle(), getDateOf(), CollectionHelper.collectionToString(getUrls()),
CollectionHelper.collectionToString(getResourceLocator()));
}
}