1 21 package com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.persistent; 22 23 import java.sql.Blob ; 24 import java.sql.SQLException ; 25 import java.util.List ; 26 import java.util.ArrayList ; 27 import java.util.Iterator ; 28 import java.util.Set ; 29 30 import com.jaspersoft.jasperserver.api.metadata.common.domain.FileResourceData; 31 import com.jaspersoft.jasperserver.api.metadata.common.domain.client.ContentResourceImpl; 32 import com.jaspersoft.jasperserver.api.JSExceptionWrapper; 33 import com.jaspersoft.jasperserver.api.JSException; 34 import com.jaspersoft.jasperserver.api.metadata.common.domain.ContentResource; 35 import com.jaspersoft.jasperserver.api.metadata.common.domain.Resource; 36 import com.jaspersoft.jasperserver.api.metadata.common.domain.FileResource; 37 import com.jaspersoft.jasperserver.api.metadata.common.domain.ResourceReference; 38 import com.jaspersoft.jasperserver.api.metadata.common.service.ResourceFactory; 39 import com.jaspersoft.jasperserver.api.metadata.common.service.impl.hibernate.ReferenceResolver; 40 import com.jaspersoft.jasperserver.api.metadata.jasperreports.domain.ReportUnit; 41 import org.apache.commons.logging.Log; 42 import org.apache.commons.logging.LogFactory; 43 import org.hibernate.Hibernate; 44 45 46 50 public class ContentRepoFileResource extends RepoResource 51 { 52 private static final Log log = LogFactory.getLog(ContentRepoFileResource.class); 53 54 private String fileType; 55 56 private Blob data; 57 58 59 62 public Blob getData() { 63 return data; 64 } 65 66 public void setData(Blob data) { 67 this.data = data; 68 } 69 70 73 public String getFileType() { 74 return fileType; 75 } 76 77 public void setFileType(String type) { 78 this.fileType = type; 79 } 80 81 82 protected void copyDataFrom(ContentResource dataRes) { 83 if (dataRes.isReference()) { 84 setData(null); 85 } else { 86 if (dataRes.hasData()) { 88 byte[] clientData = dataRes.getData(); 89 Blob blob = Hibernate.createBlob(clientData); 90 setData(blob); 91 } 92 } 93 } 94 95 104 public FileResourceData copyData() { 105 try { 106 FileResourceData resData; 107 108 Blob blob = getData(); 109 if (blob == null) { 110 resData = new FileResourceData((byte[]) null); 111 } else { 112 resData = new FileResourceData(blob.getBinaryStream()); 113 } 114 115 return resData; 116 } catch (SQLException e) { 117 log.error("Error while reading data blob of \"" + getResourceURI() + "\"", e); 118 throw new JSExceptionWrapper(e); 119 } 120 } 121 122 protected void copyTo(Resource clientRes, ResourceFactory resourceFactory) { 123 super.copyTo(clientRes, resourceFactory); 124 125 ContentResource resource = (ContentResource) clientRes; 126 127 resource.setFileType(getFileType()); 128 resource.setReferenceURI(null); 130 131 RepoFolder childrenFolder = getChildrenFolder(); 132 133 if (childrenFolder != null) { 134 Set resList = childrenFolder.getChildren(); 135 for (Iterator it = resList.iterator(); it.hasNext();) { 136 ContentRepoFileResource fileRes = (ContentRepoFileResource) it.next(); 137 resource.addChildResource((ContentResource) fileRes.toClient(resourceFactory)); 138 } 139 } 140 141 } 142 143 144 protected void copyFrom(Resource clientRes, 145 ReferenceResolver referenceResolver) { 146 super.copyFrom(clientRes, referenceResolver); 147 148 ContentResource dataRes = (ContentResource) clientRes; 149 setFileType(dataRes.getFileType()); 150 copyDataFrom(dataRes); 151 copyResources(referenceResolver, (ContentResource) clientRes); 152 } 153 154 155 private void copyResources(ReferenceResolver referenceResolver, ContentResource resource) { 156 List clientResources = resource.getResources(); 157 if (clientResources != null && !clientResources.isEmpty()) { 158 for (Iterator it = clientResources.iterator(); it.hasNext();) { 159 ContentResource childResource = (ContentResource) it.next(); 160 getReference(childResource, RepoFileResource.class, referenceResolver); 161 } 162 } 163 } 164 165 166 protected Class getClientItf() 167 { 168 return ContentResource.class; 169 } 170 } 171 | Popular Tags |