/******************************************************************************* * Copyright (c) 2015 IBH SYSTEMS GmbH. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBH SYSTEMS GmbH - initial API and implementation *******************************************************************************/ package org.eclipse.packagedrone.repo.channel.apm; import static java.util.stream.Collectors.toList; import java.util.Date; import java.util.HashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArraySet; import java.util.stream.Collectors; import org.eclipse.packagedrone.repo.MetaKey; import org.eclipse.packagedrone.repo.channel.ArtifactInformation; import org.eclipse.packagedrone.repo.channel.ValidationMessage; public class ArtifactModel { private String parentId; private Set<String> childIds; private String name; private long size; private Date date; private List<ValidationMessageModel> validationMessages; private Map<MetaKey, String> providedMetaData; private Map<MetaKey, String> extractedMetaData; private Set<String> facets; private String virtualizerAspectId; public ArtifactModel () { this.childIds = new CopyOnWriteArraySet<> (); this.facets = new CopyOnWriteArraySet<> (); this.validationMessages = new LinkedList<> (); this.providedMetaData = new HashMap<> (); this.extractedMetaData = new HashMap<> (); } public ArtifactModel ( final ArtifactModel other ) { this.parentId = other.parentId; this.childIds = other.childIds != null ? new CopyOnWriteArraySet<> ( other.childIds ) : new CopyOnWriteArraySet<> (); this.facets = other.facets != null ? new CopyOnWriteArraySet<> ( other.facets ) : new CopyOnWriteArraySet<> (); this.name = other.name; this.size = other.size; this.date = other.date; this.validationMessages = new CopyOnWriteArrayList<> ( other.validationMessages ); this.providedMetaData = new HashMap<> ( other.providedMetaData ); this.extractedMetaData = new HashMap<> ( other.extractedMetaData ); this.virtualizerAspectId = other.virtualizerAspectId; } public void setParentId ( final String parentId ) { this.parentId = parentId; } public String getParentId () { return this.parentId; } public void setChildIds ( final Set<String> childIds ) { this.childIds = childIds; } public Set<String> getChildIds () { return this.childIds; } public void setName ( final String name ) { this.name = name; } public String getName () { return this.name; } public void setSize ( final long size ) { this.size = size; } public long getSize () { return this.size; } public void setDate ( final Date date ) { this.date = date; } public Date getDate () { return this.date; } public void setValidationMessages ( final List<ValidationMessageModel> validationMessages ) { this.validationMessages = validationMessages; } public List<ValidationMessageModel> getValidationMessages () { return this.validationMessages; } public void setProvidedMetaData ( final Map<MetaKey, String> providedMetaData ) { this.providedMetaData = providedMetaData; } public Map<MetaKey, String> getProvidedMetaData () { return this.providedMetaData; } public void setExtractedMetaData ( final Map<MetaKey, String> extractedMetaData ) { this.extractedMetaData = extractedMetaData; } public Map<MetaKey, String> getExtractedMetaData () { return this.extractedMetaData; } public void setFacets ( final Set<String> facets ) { this.facets = facets; } public Set<String> getFacets () { return this.facets; } public void setVirtualizerAspectId ( final String virtualizerAspectId ) { this.virtualizerAspectId = virtualizerAspectId; } public String getVirtualizerAspectId () { return this.virtualizerAspectId; } public static ArtifactInformation toInformation ( final String id, final ArtifactModel model ) { final List<ValidationMessage> messages = model.getValidationMessages ().stream ().map ( ValidationMessageModel::toMessage ).collect ( Collectors.toList () ); return new ArtifactInformation ( id, model.getParentId (), model.getChildIds (), model.getName (), model.getSize (), model.getDate ().toInstant (), model.getFacets (), messages, model.getProvidedMetaData (), model.getExtractedMetaData (), model.getVirtualizerAspectId () ); } public static ArtifactInformation toInformation ( final Map.Entry<String, ArtifactModel> entry ) { return toInformation ( entry.getKey (), entry.getValue () ); } public static ArtifactModel fromInformation ( final ArtifactInformation ai ) { final ArtifactModel result = new ArtifactModel (); result.setFacets ( ai.getFacets () ); result.setParentId ( ai.getParentId () ); result.setChildIds ( new CopyOnWriteArraySet<> ( ai.getChildIds () ) ); result.setName ( ai.getName () ); result.setSize ( ai.getSize () ); result.setDate ( new Date ( ai.getCreationInstant ().toEpochMilli () ) ); result.setExtractedMetaData ( new HashMap<> ( ai.getExtractedMetaData () ) ); result.setProvidedMetaData ( new HashMap<> ( ai.getProvidedMetaData () ) ); result.setVirtualizerAspectId ( ai.getVirtualizerAspectId () ); result.setValidationMessages ( ai.getValidationMessages ().stream ().map ( ValidationMessageModel::fromMessage ).collect ( toList () ) ); return result; } }