/******************************************************************************* * Copyright (c) 2013 aegif. * * This file is part of NemakiWare. * * NemakiWare is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * NemakiWare 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. * * You should have received a copy of the GNU General Public License along with NemakiWare. * If not, see <http://www.gnu.org/licenses/>. * * Contributors: * linzhixing(https://github.com/linzhixing) - initial API and implementation ******************************************************************************/ package jp.aegif.nemaki.model.couch; import java.util.ArrayList; import java.util.List; import jp.aegif.nemaki.model.Ace; import jp.aegif.nemaki.model.Acl; import jp.aegif.nemaki.model.Aspect; import jp.aegif.nemaki.model.Content; import jp.aegif.nemaki.model.Property; import org.json.simple.JSONArray; import org.json.simple.JSONObject; public class CouchContent extends CouchNodeBase{ private static final long serialVersionUID = -4795093916552322103L; private String name; private String description; private String parentId; private CouchAcl acl; private Boolean aclInherited; private List<Property> subTypeProperties = new ArrayList<Property>(); private List<Aspect> aspects = new ArrayList<Aspect>(); private List<String> secondaryIds = new ArrayList<String>(); private String objectType; private String changeToken; public CouchContent(){ super(); } public CouchContent(Content c){ super(c); setName(c.getName()); setDescription(c.getDescription()); setParentId(c.getParentId()); setAcl(convertToCouchAcl(c.getAcl())); setAclInherited(c.isAclInherited()); setSubTypeProperties(c.getSubTypeProperties()); setAspects(c.getAspects()); setSecondaryIds(c.getSecondaryIds()); setObjectType(c.getObjectType()); setChangeToken(c.getChangeToken()); } /** * Getter & Setter */ public String getName() { return name; } public void setName(String name) { this.name = name; } public String getDescription() { return description; } public void setDescription(String description) { this.description = description; } public String getParentId() { return parentId; } public void setParentId(String parentId) { this.parentId = parentId; } public CouchAcl getAcl() { return acl; } public void setAcl(CouchAcl acl) { this.acl = acl; } public Boolean isAclInherited() { return aclInherited; } public void setAclInherited(Boolean aclInherited) { this.aclInherited = aclInherited; } public List<Property> getSubTypeProperties() { return subTypeProperties; } public void setSubTypeProperties(List<Property> subTypeProperties) { this.subTypeProperties = subTypeProperties; } public List<Aspect> getAspects() { return aspects; } public void setAspects(List<Aspect> aspects) { this.aspects = aspects; } public List<String> getSecondaryIds() { return secondaryIds; } public void setSecondaryIds(List<String> secondaryIds) { this.secondaryIds = secondaryIds; } public String getObjectType() { return objectType; } public void setObjectType(String objectType) { this.objectType = objectType; } public String getChangeToken() { return changeToken; } public void setChangeToken(String changeToken) { this.changeToken = changeToken; } private CouchAcl convertToCouchAcl(Acl acl){ List<Ace> localAces = acl.getLocalAces(); JSONArray entries = new org.json.simple.JSONArray(); for(Ace ace : localAces){ JSONObject entry = new JSONObject(); entry.put("principal", ace.getPrincipalId()); entry.put("permissions", ace.getPermissions()); entries.add(entry); } CouchAcl cacl = new CouchAcl(); cacl.setEntries(entries); return cacl; } @Override public Content convert(){ Content c = new Content(super.convert()); c.setName(getName()); c.setDescription(getDescription()); c.setParentId(getParentId()); c.setAclInherited(isAclInherited()); c.setSubTypeProperties(getSubTypeProperties()); c.setAspects(getAspects()); c.setSecondaryIds(getSecondaryIds()); c.setObjectType(getObjectType()); c.setChangeToken(getChangeToken()); CouchAcl cacl = getAcl(); c.setAcl(cacl.convertToNemakiAcl()); return c; } }