1 21 package com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.persistent; 22 23 import java.util.HashSet ; 24 import java.util.Set ; 25 26 import org.apache.commons.lang.builder.EqualsBuilder; 27 import org.apache.commons.lang.builder.HashCodeBuilder; 28 import org.apache.commons.logging.Log; 29 import org.apache.commons.logging.LogFactory; 30 31 import com.jaspersoft.jasperserver.api.metadata.common.domain.Resource; 32 import com.jaspersoft.jasperserver.api.metadata.common.domain.ResourceLookup; 33 import com.jaspersoft.jasperserver.api.metadata.common.domain.ResourceReference; 34 import com.jaspersoft.jasperserver.api.metadata.common.domain.client.ResourceLookupImpl; 35 import com.jaspersoft.jasperserver.api.metadata.common.service.ResourceFactory; 36 import com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.ReferenceResolver; 37 38 39 40 46 public abstract class RepoResource extends RepoResourceBase 47 { 48 private static final Log log = LogFactory.getLog(RepoResource.class); 49 50 private RepoFolder childrenFolder; 51 52 private Set newChildren; 53 54 protected RepoResource() { 55 } 56 57 protected final ResourceReference getClientReference(RepoResource reference, ResourceFactory resourceFactory) { 58 ResourceReference clientRef; 59 if (reference == null) { 60 clientRef = null; 61 } else if (getChildrenFolder() != null && getChildrenFolder().equals(reference.getParent()) ) { 62 Resource clientRes = (Resource) reference.toClient(resourceFactory); 64 clientRef = new ResourceReference(clientRes); 65 } else { 66 ResourceLookup clientLookup = reference.toClientLookup(); 67 clientRef = new ResourceReference(clientLookup); 68 } 69 return clientRef; 70 } 71 72 public Object toClient(ResourceFactory resourceFactory) { 73 Resource clientRes = (Resource) super.toClient(resourceFactory); 74 copyTo(clientRes, resourceFactory); 75 return clientRes; 76 } 77 78 public ResourceLookup toClientLookup() { 79 Class clientItf = getClientItf(); 80 ResourceLookup clientRes = new ResourceLookupImpl(); 82 clientRes.setResourceType(clientItf.getName()); 83 super.copyTo(clientRes); 84 return clientRes; 85 } 86 87 protected void copyTo(Resource clientRes, ResourceFactory resourceFactory) { 88 super.copyTo(clientRes); 89 } 90 91 public void copyFromClient(Resource clientRes, ReferenceResolver referenceResolver) 92 { 93 initNewChildren(); 94 95 copyFrom(clientRes, referenceResolver); 96 97 filterChildren(); 98 } 99 100 protected void copyFrom(Resource clientRes, ReferenceResolver referenceResolver) { 101 super.copyFrom(clientRes); 102 } 103 104 protected void initNewChildren() { 105 newChildren = null; 106 } 107 108 public void addNewChild(RepoResource resource) { 109 RepoFolder local = getChildrenFolder(); 110 111 resource.setParent(local); 112 local.addChild(resource); 113 114 if (newChildren == null) { 115 newChildren = new HashSet (); 116 } 117 newChildren.add(resource); 118 } 119 120 protected void filterChildren() { 121 RepoFolder children = getChildrenFolder(); 122 if (children != null) { 123 children.filterChildren(newChildren); 124 } 125 } 126 127 128 132 public RepoFolder getChildrenFolder() { 133 return childrenFolder; 134 } 135 136 public void setChildrenFolder(RepoFolder childrenFolder) { 137 this.childrenFolder = childrenFolder; 138 } 139 140 protected RepoResource getReference(ResourceReference resourceRef, Class persistentClass, ReferenceResolver referenceResolver) { 141 return referenceResolver.getReference(this, resourceRef, persistentClass); 142 } 143 144 protected RepoResource getReference(Resource resource, Class persistentClass, ReferenceResolver referenceResolver) { 145 return referenceResolver.getReference(this, resource, persistentClass); 146 } 147 148 public boolean equals(Object obj) { 149 if (!(obj instanceof RepoResource)) { 150 return false; 151 } 152 if (this == obj) { 153 return true; 154 } 155 if (isNew()) { 156 return super.equals(obj); 157 } 158 RepoResource res = (RepoResource) obj; 159 return new EqualsBuilder().append(getId(), res.getId()).isEquals(); 160 } 161 162 public int hashCode() { 163 if (isNew()) { 164 return super.hashCode(); 165 } 166 return new HashCodeBuilder().append(getId()).toHashCode(); 167 } 168 169 public String toString() { 170 return getResourceURI(); 171 } 172 } 173 | Popular Tags |