/* * Copyright (C) 2009 eXo Platform SAS. * * This is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation; either version 2.1 of * the License, or (at your option) any later version. * * This software 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this software; if not, write to the Free * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA, or see the FSF site: http://www.fsf.org. */ package org.exoplatform.services.jcr.impl.xml.importing.dataflow; import org.exoplatform.services.jcr.access.AccessControlList; import org.exoplatform.services.jcr.core.nodetype.NodeTypeData; import org.exoplatform.services.jcr.datamodel.InternalQName; import org.exoplatform.services.jcr.datamodel.ItemData; import org.exoplatform.services.jcr.datamodel.NodeData; import org.exoplatform.services.jcr.datamodel.QPath; import org.exoplatform.services.jcr.impl.dataflow.TransientNodeData; import org.exoplatform.services.jcr.impl.xml.importing.ACLInitializationHelper; import org.exoplatform.services.jcr.util.IdGenerator; import org.exoplatform.services.log.ExoLogger; import org.exoplatform.services.log.Log; import java.util.ArrayList; import java.util.List; /** * Created by The eXo Platform SAS * * @author <a href="mailto:Sergey.Kabashnyuk@gmail.com">Sergey Kabashnyuk</a> * @version $Id: ImportNodeData.java 11907 2008-03-13 15:36:21Z ksm $ */ public class ImportNodeData extends TransientNodeData implements ImportItemData { /** * */ private static final Log LOG = ExoLogger.getLogger("exo.jcr.component.core.ImportNodeData"); /** * */ private String baseVersionIdentifier; /** * */ private boolean isContainsVersionhistory; /** * */ private boolean isMixReferenceable; /** * */ private boolean isMixVersionable; private boolean newIdentifer; /** * */ private final List<NodeTypeData> nodeTypes; private String predecessorsIdentifier; /** * */ private String versionHistoryIdentifier; /** * */ private String exoOwner; /** * */ private List<String> exoPrivileges; /** * Indicates whether this node is temporary or not. */ private boolean temporary; /** * @param parent * @param name * @param index */ public ImportNodeData(ItemData parent, InternalQName name, int index) { super(); this.qpath = QPath.makeChildPath(parent.getQPath(), name, index); this.parentIdentifier = parent.getIdentifier(); this.nodeTypes = new ArrayList<NodeTypeData>(); this.persistedVersion = -1; } /** * @param path * @param identifier * @param version * @param primaryTypeName * @param mixinTypeNames * @param orderNum * @param parentIdentifier * @param acl */ public ImportNodeData(QPath path, String identifier, int version, InternalQName primaryTypeName, InternalQName[] mixinTypeNames, int orderNum, String parentIdentifier, AccessControlList acl) { super(path, identifier, version, primaryTypeName, mixinTypeNames, orderNum, parentIdentifier, acl); this.nodeTypes = new ArrayList<NodeTypeData>(); } /** * */ public void addNodeType(NodeTypeData nt) { nodeTypes.add(nt); } /** * @return the baseVersionIdentifier */ public String getBaseVersionIdentifier() { return baseVersionIdentifier; } // // /** // * @return the currentNodeTypes // */ // public List<ExtendedNodeType> getCurrentNodeTypes() { // return nodeTypes; // } /** * @return the exoOwner */ public String getExoOwner() { return exoOwner; } /** * @return the exoPrivileges */ public List<String> getExoPrivileges() { return exoPrivileges; } /* * (non-Javadoc) * @see * org.exoplatform.services.jcr.impl.dataflow.TransientNodeData#getMixinTypeNames * () */ @Override public InternalQName[] getMixinTypeNames() { if (mixinTypeNames == null) return new InternalQName[0]; return mixinTypeNames; } /** * {@inheritDoc} */ public AccessControlList getACL() { if (exoPrivileges != null || exoOwner != null) { return ACLInitializationHelper.initAcl(super.getACL(), exoOwner, exoPrivileges); } return super.getACL(); } /** * @return the nodeTypes */ public List<NodeTypeData> getNodeTypes() { return nodeTypes; } public String getPredecessorsIdentifier() { return predecessorsIdentifier; } /** * @return the versionHistoryIdentifier */ public String getVersionHistoryIdentifier() { return versionHistoryIdentifier; } /** * @return the isContainsVersionhistory */ public boolean isContainsVersionhistory() { return isContainsVersionhistory; } /** * @return the isMixReferenceable */ public boolean isMixReferenceable() { return isMixReferenceable; } /** * @return the isMixVersionable */ public boolean isMixVersionable() { return isMixVersionable; } public boolean isNewIdentifer() { return newIdentifer; } /** * @return the temporary */ public boolean isTemporary() { return temporary; } /** * @param temporary the temporary to set */ public void setTemporary(boolean temporary) { this.temporary = temporary; } /** * @param baseVersionIdentifier the baseVersionIdentifier to set */ public void setBaseVersionIdentifier(String baseVersionIdentifier) { this.baseVersionIdentifier = baseVersionIdentifier; } /** * @param isContainsVersionhistory the isContainsVersionhistory to set */ public void setContainsVersionhistory(boolean isContainsVersionhistory) { this.isContainsVersionhistory = isContainsVersionhistory; } /** * @param exoOwner the exoOwner to set */ public void setExoOwner(String exoOwner) { this.exoOwner = exoOwner; } /** * @return */ public boolean isExoOwneable() { return exoOwner != null; } /** * @param exoPrivileges the exoPrivileges to set */ public void setExoPrivileges(List<String> exoPrivileges) { this.exoPrivileges = exoPrivileges; } public boolean isExoPrivilegeable() { return exoPrivileges != null; } public void setOrderNumber(int orderNum) { this.orderNum = orderNum; } public void setMixinTypeNames(InternalQName[] mixinTypeNames) { this.mixinTypeNames = mixinTypeNames; } public void setIdentifier(String identifier) { this.identifier = identifier; } public void setACL(AccessControlList acl) { this.acl = acl; } public void setIsNewIdentifer(boolean newIdentifer) { this.newIdentifer = newIdentifer; } /** * @param isMixReferenceable the isMixReferenceable to set */ public void setMixReferenceable(boolean isMixReferenceable) { this.isMixReferenceable = isMixReferenceable; } /** * @param isMixVersionable the isMixVersionable to set */ public void setMixVersionable(boolean isMixVersionable) { this.isMixVersionable = isMixVersionable; } /** * Set parent identifier * * @param identifer */ public void setParentIdentifer(String identifer) { this.parentIdentifier = identifer; } public void setPredecessorsIdentifier(String predecessorsIdentifier) { this.predecessorsIdentifier = predecessorsIdentifier; } public void setPrimaryTypeName(InternalQName name) { primaryTypeName = name; } /** * Set path of item * * @param path */ public void setQPath(QPath path) { this.qpath = path; } /** * @param versionHistoryIdentifier the versionHistoryIdentifier to set */ public void setVersionHistoryIdentifier(String versionHistoryIdentifier) { this.versionHistoryIdentifier = versionHistoryIdentifier; } /** * Factory method * * @param parent NodeData * @param name InternalQName * @param primaryTypeName InternalQName * @param index int * @param orderNumber int * @return */ public static ImportNodeData createNodeData(NodeData parent, InternalQName name, InternalQName primaryTypeName, int index, int orderNumber) { ImportNodeData nodeData = null; QPath path = QPath.makeChildPath(parent.getQPath(), name, index); nodeData = new ImportNodeData(path, IdGenerator.generate(), -1, primaryTypeName, new InternalQName[0], orderNumber, parent.getIdentifier(), parent.getACL()); return nodeData; } public static ImportNodeData createCopy(NodeData source) { return new ImportNodeData(source.getQPath(), source.getIdentifier(), source.getPersistedVersion(), source .getPrimaryTypeName(), source.getMixinTypeNames(), source.getOrderNumber(), source.getParentIdentifier(), source.getACL()); } }