001/* 002 * (C) Copyright 2012 Nuxeo SA (http://nuxeo.com/) and contributors. 003 * 004 * All rights reserved. This program and the accompanying materials 005 * are made available under the terms of the GNU Lesser General Public License 006 * (LGPL) version 2.1 which accompanies this distribution, and is available at 007 * http://www.gnu.org/licenses/lgpl.html 008 * 009 * This library is distributed in the hope that it will be useful, 010 * but WITHOUT ANY WARRANTY; without even the implied warranty of 011 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 012 * Lesser General Public License for more details. 013 * 014 * Contributors: 015 * Antoine Taillefer 016 */ 017package org.nuxeo.ecm.diff.service.impl; 018 019import java.util.ArrayList; 020import java.util.List; 021 022import org.nuxeo.common.xmap.annotation.XNode; 023import org.nuxeo.common.xmap.annotation.XNodeList; 024import org.nuxeo.common.xmap.annotation.XObject; 025import org.nuxeo.ecm.diff.model.DiffComplexFieldDefinition; 026import org.nuxeo.ecm.diff.model.DiffFieldItemDefinition; 027import org.nuxeo.ecm.diff.model.impl.DiffComplexFieldDefinitionImpl; 028 029/** 030 * Diff complex field descriptor. 031 * 032 * @author Antoine Taillefer (ataillefer@nuxeo.com) 033 * @since 5.6 034 */ 035@XObject("diffComplexField") 036public class DiffComplexFieldDescriptor { 037 038 @XNode("@schema") 039 public String schema; 040 041 @XNode("@name") 042 public String name; 043 044 @XNodeList(value = "includedItems/item", type = ArrayList.class, componentType = DiffFieldItemDescriptor.class) 045 public List<DiffFieldItemDescriptor> includedItems; 046 047 @XNodeList(value = "excludedItems/item", type = ArrayList.class, componentType = DiffFieldItemDescriptor.class) 048 public List<DiffFieldItemDescriptor> excludedItems; 049 050 public String getSchema() { 051 return schema; 052 } 053 054 public void setSchema(String schema) { 055 this.schema = schema; 056 } 057 058 public String getName() { 059 return name; 060 } 061 062 public void setName(String name) { 063 this.name = name; 064 } 065 066 public List<DiffFieldItemDescriptor> getIncludedItems() { 067 return includedItems; 068 } 069 070 public void setIncludedItems(List<DiffFieldItemDescriptor> includedItems) { 071 this.includedItems = includedItems; 072 } 073 074 public List<DiffFieldItemDescriptor> getExcludedItems() { 075 return excludedItems; 076 } 077 078 public void setExcludedItems(List<DiffFieldItemDescriptor> excludedItems) { 079 this.excludedItems = excludedItems; 080 } 081 082 public DiffComplexFieldDefinition getDiffComplexFieldDefinition() { 083 return new DiffComplexFieldDefinitionImpl(getSchema(), getName(), 084 getDiffFieldItemDefinitions(getIncludedItems()), getDiffFieldItemDefinitions(getExcludedItems())); 085 } 086 087 protected List<DiffFieldItemDefinition> getDiffFieldItemDefinitions(List<DiffFieldItemDescriptor> itemDescriptors) { 088 List<DiffFieldItemDefinition> diffFieldItemDefinitions = new ArrayList<DiffFieldItemDefinition>(); 089 for (DiffFieldItemDescriptor itemDescriptor : itemDescriptors) { 090 diffFieldItemDefinitions.add(itemDescriptor.getDiffFieldItemDefinition()); 091 } 092 return diffFieldItemDefinitions; 093 } 094 095}