/* Copyright 2014 Danish Maritime Authority.
*
* 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 net.maritimecloud.serviceregistry.query;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.ElementCollection;
import javax.persistence.Embedded;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import net.maritimecloud.serviceregistry.infrastructure.jackson.CoverageSerializer;
import net.maritimecloud.serviceregistry.command.serviceinstance.Coverage;
import net.maritimecloud.serviceregistry.command.serviceinstance.ServiceEndpoint;
import net.maritimecloud.serviceregistry.command.servicespecification.ServiceType;
/**
*
* @author Christoffer Børrild
*/
@Entity
public class ServiceInstanceEntry implements Serializable {
@Id
@Column(length = 256)
private String serviceInstanceId;
private String providerId;
private String specificationId;
private String primaryAlias;
private String name;
@Column(length = 1000)
private String summary;
@JsonSerialize(using = CoverageSerializer.class)
@Embedded
private Coverage coverage; // FIXME: create complex version of coverage instead of json-serialized one
@ElementCollection(fetch = FetchType.EAGER) // FIXME: introduce a separate view with endpoints-per-instance!
private final List<ServiceEndpoint> endpoints;
private ServiceType specificationServiceType;
public ServiceInstanceEntry() {
this.endpoints = new ArrayList<>();
}
public String getServiceInstanceId() {
return serviceInstanceId;
}
public void setServiceInstanceId(String serviceInstanceId) {
this.serviceInstanceId = serviceInstanceId;
}
public String getProviderId() {
return providerId;
}
public void setProviderId(String providerId) {
this.providerId = providerId;
}
public String getSpecificationId() {
return specificationId;
}
public void setSpecificationId(String specificationId) {
this.specificationId = specificationId;
}
public String getPrimaryAlias() {
return primaryAlias;
}
public void setPrimaryAlias(String primaryAlias) {
this.primaryAlias = primaryAlias;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSummary() {
return summary;
}
public void setSummary(String summary) {
this.summary = summary;
}
@JsonSerialize(using = CoverageSerializer.class)
public Coverage getCoverage() {
return coverage;
}
@JsonSerialize(using = CoverageSerializer.class)
public void setCoverage(Coverage coverage) {
this.coverage = coverage;
}
public List<ServiceEndpoint> getEndpoints() {
return endpoints;
}
public ServiceType getSpecificationServiceType() {
return specificationServiceType;
}
public void setSpecificationServiceType(ServiceType serviceType) {
this.specificationServiceType = serviceType;
}
@Override
public String toString() {
return "ServiceInstanceEntry{"
+ "serviceInstanceId=" + serviceInstanceId
+ ", providerId=" + providerId
+ ", specificationId=" + specificationId
+ ", name=" + name
+ ", summary=" + summary
+ ", coverage=" + coverage
+ ", endpoints=" + endpoints
+ ", specificationServiceType=" + specificationServiceType
+ '}';
}
void addEndpoint(ServiceEndpoint serviceEndpoint) {
getEndpoints().add(serviceEndpoint);
}
void removeEndpoint(ServiceEndpoint serviceEndpoint) {
getEndpoints().remove(serviceEndpoint);
}
}