Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRalf Mollik2019-04-25 12:37:49 +0000
committerRalf Mollik2019-04-25 12:37:49 +0000
commitebb479d319216b3735ee73443c5d6456ca475845 (patch)
treee02cc649dca5f2960bd488ee1311a70105342bd2
parentb3ecd42329492e14aaca69d7af17bc15fa0c588b (diff)
downloadorg.eclipse.osbp.blob-ebb479d319216b3735ee73443c5d6456ca475845.tar.gz
org.eclipse.osbp.blob-ebb479d319216b3735ee73443c5d6456ca475845.tar.xz
org.eclipse.osbp.blob-ebb479d319216b3735ee73443c5d6456ca475845.zip
update blob service
Signed-off-by: Ralf Mollik <ramollik@compex-commerce.com>
-rw-r--r--org.eclipse.osbp.blob.feature/feature.xml3
-rw-r--r--org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/BlobTypingDto.java2
-rw-r--r--org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/mapper/BlobMappingDtoMapper.java2
-rw-r--r--org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/mapper/BlobTypingDtoMapper.java2
-rw-r--r--org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/mapper/MimeTypeDtoMapper.java2
-rw-r--r--org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/service/BlobDtoService.java4
-rw-r--r--org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/service/BlobMappingDtoService.java4
-rw-r--r--org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/entities/BlobMapping.java4
-rw-r--r--org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/entities/BlobTyping.java2
-rw-r--r--org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/entities/MimeType.java2
-rw-r--r--org.eclipse.osbp.blob/src/org/eclipse/osbp/blob/service/BlobService.java64
11 files changed, 63 insertions, 28 deletions
diff --git a/org.eclipse.osbp.blob.feature/feature.xml b/org.eclipse.osbp.blob.feature/feature.xml
index 5a1a935..090fe7a 100644
--- a/org.eclipse.osbp.blob.feature/feature.xml
+++ b/org.eclipse.osbp.blob.feature/feature.xml
@@ -3,7 +3,8 @@
id="org.eclipse.osbp.blob.feature"
label="%featureName"
version="0.9.0.qualifier"
- provider-name="%providerName">
+ provider-name="%providerName"
+ plugin="org.eclipse.osbp.license">
<description>
%description
diff --git a/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/BlobTypingDto.java b/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/BlobTypingDto.java
index c8d3302..68132f7 100644
--- a/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/BlobTypingDto.java
+++ b/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/BlobTypingDto.java
@@ -167,7 +167,7 @@ public class BlobTypingDto implements IDto, Serializable, PropertyChangeListener
*/
public AttributesDto getAttributes() {
if(this.attributes== null){
- this.attributes = new AttributesDto();
+ this.attributes = new AttributesDto();this.attributes.addPropertyChangeListener(this);
}
return this.attributes;
}
diff --git a/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/mapper/BlobMappingDtoMapper.java b/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/mapper/BlobMappingDtoMapper.java
index 5453aa8..2789f1c 100644
--- a/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/mapper/BlobMappingDtoMapper.java
+++ b/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/mapper/BlobMappingDtoMapper.java
@@ -253,7 +253,7 @@ public class BlobMappingDtoMapper<DTO extends BlobMappingDto, ENTITY extends Blo
// if entities are being removed, then they are passed to the
// #internalRemoveFromChilds method of the parent entity. So they are
// removed directly from the list of entities.
- childsList.mapToEntity(mapper,
+ if ( childsList != null ) childsList.mapToEntity(mapper,
parentEntity::addToBlobsRef,
parentEntity::internalRemoveFromBlobsRef);
return null;
diff --git a/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/mapper/BlobTypingDtoMapper.java b/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/mapper/BlobTypingDtoMapper.java
index bf00329..88936be 100644
--- a/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/mapper/BlobTypingDtoMapper.java
+++ b/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/mapper/BlobTypingDtoMapper.java
@@ -253,7 +253,7 @@ public class BlobTypingDtoMapper<DTO extends BlobTypingDto, ENTITY extends BlobT
// if entities are being removed, then they are passed to the
// #internalRemoveFromChilds method of the parent entity. So they are
// removed directly from the list of entities.
- childsList.mapToEntity(mapper,
+ if ( childsList != null ) childsList.mapToEntity(mapper,
parentEntity::addToNormalizer,
parentEntity::internalRemoveFromNormalizer);
return null;
diff --git a/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/mapper/MimeTypeDtoMapper.java b/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/mapper/MimeTypeDtoMapper.java
index f9c9277..4cef82a 100644
--- a/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/mapper/MimeTypeDtoMapper.java
+++ b/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/mapper/MimeTypeDtoMapper.java
@@ -195,7 +195,7 @@ public class MimeTypeDtoMapper<DTO extends MimeTypeDto, ENTITY extends MimeType>
// if entities are being removed, then they are passed to the
// #internalRemoveFromChilds method of the parent entity. So they are
// removed directly from the list of entities.
- childsList.mapToEntity(mapper,
+ if ( childsList != null ) childsList.mapToEntity(mapper,
parentEntity::addToContentTypeList,
parentEntity::internalRemoveFromContentTypeList);
return null;
diff --git a/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/service/BlobDtoService.java b/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/service/BlobDtoService.java
index 48b64df..9cb2421 100644
--- a/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/service/BlobDtoService.java
+++ b/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/service/BlobDtoService.java
@@ -2,10 +2,10 @@ package org.eclipse.osbp.blob.dtos.service;
import org.eclipse.osbp.blob.dtos.BlobDto;
import org.eclipse.osbp.blob.entities.Blob;
-import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOService;
@SuppressWarnings("all")
-public class BlobDtoService extends AbstractDTOServiceWithMutablePersistence<BlobDto, Blob> {
+public class BlobDtoService extends AbstractDTOService<BlobDto, Blob> {
public BlobDtoService() {
// set the default persistence ID
setPersistenceId("blob");
diff --git a/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/service/BlobMappingDtoService.java b/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/service/BlobMappingDtoService.java
index 7e29362..c3e41eb 100644
--- a/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/service/BlobMappingDtoService.java
+++ b/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/dtos/service/BlobMappingDtoService.java
@@ -2,10 +2,10 @@ package org.eclipse.osbp.blob.dtos.service;
import org.eclipse.osbp.blob.dtos.BlobMappingDto;
import org.eclipse.osbp.blob.entities.BlobMapping;
-import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.dsl.dto.lib.services.impl.AbstractDTOService;
@SuppressWarnings("all")
-public class BlobMappingDtoService extends AbstractDTOServiceWithMutablePersistence<BlobMappingDto, BlobMapping> {
+public class BlobMappingDtoService extends AbstractDTOService<BlobMappingDto, BlobMapping> {
public BlobMappingDtoService() {
// set the default persistence ID
setPersistenceId("blob");
diff --git a/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/entities/BlobMapping.java b/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/entities/BlobMapping.java
index 2fd3844..8912708 100644
--- a/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/entities/BlobMapping.java
+++ b/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/entities/BlobMapping.java
@@ -40,7 +40,7 @@ public class BlobMapping implements IEntity {
@Column(name = "MIME_TYPE_ID")
private int mimeTypeId;
- @JoinColumn(name = "BLOB_MAPPING_ID")
+ @JoinColumn(name = "BLOBS_REF_ID")
@OneToMany(mappedBy = "blobMapping", cascade = { CascadeType.REMOVE, CascadeType.MERGE, CascadeType.PERSIST }, orphanRemoval = true, fetch = FetchType.EAGER)
private List<Blob> blobsRef;
@@ -224,7 +224,7 @@ public class BlobMapping implements IEntity {
return;
}
- internalGetBlobsRef().add(blob);
+ internalGetBlobsRef().add(blob);
}
/**
diff --git a/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/entities/BlobTyping.java b/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/entities/BlobTyping.java
index 712fbe2..3a6964a 100644
--- a/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/entities/BlobTyping.java
+++ b/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/entities/BlobTyping.java
@@ -196,7 +196,7 @@ public class BlobTyping implements Serializable, IBean {
return;
}
- internalGetNormalizer().add(normalizerResolution);
+ internalGetNormalizer().add(normalizerResolution);
}
/**
diff --git a/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/entities/MimeType.java b/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/entities/MimeType.java
index 9df2bfe..27ba22e 100644
--- a/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/entities/MimeType.java
+++ b/org.eclipse.osbp.blob/src-gen/org/eclipse/osbp/blob/entities/MimeType.java
@@ -187,7 +187,7 @@ public class MimeType implements Serializable, IBean {
return;
}
- internalGetContentTypeList().add(contentType);
+ internalGetContentTypeList().add(contentType);
}
/**
diff --git a/org.eclipse.osbp.blob/src/org/eclipse/osbp/blob/service/BlobService.java b/org.eclipse.osbp.blob/src/org/eclipse/osbp/blob/service/BlobService.java
index 209ec82..ed3b050 100644
--- a/org.eclipse.osbp.blob/src/org/eclipse/osbp/blob/service/BlobService.java
+++ b/org.eclipse.osbp.blob/src/org/eclipse/osbp/blob/service/BlobService.java
@@ -15,7 +15,9 @@
*/
package org.eclipse.osbp.blob.service;
+import java.awt.Graphics2D;
import java.awt.Image;
+import java.awt.RenderingHints;
import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
@@ -40,7 +42,7 @@ import org.eclipse.osbp.dsl.dto.lib.impl.DtoServiceAccess;
import org.eclipse.osbp.jpa.services.Query;
import org.eclipse.osbp.jpa.services.filters.LAnd;
import org.eclipse.osbp.jpa.services.filters.LCompare;
-import org.eclipse.osbp.runtime.common.filter.IDTOServiceWithMutablePersistence;
+import org.eclipse.osbp.runtime.common.filter.IDTOService;
import org.eclipse.osbp.runtime.common.filter.IQuery;
import org.eclipse.osbp.ui.api.customfields.IBlobEvent;
import org.eclipse.osbp.ui.api.customfields.IBlobService;
@@ -65,7 +67,7 @@ import com.vaadin.ui.Label;
*/
@Component
public class BlobService implements IBlobService {
- private IDTOServiceWithMutablePersistence<BlobMappingDto> dtoBlobMappingDtoService;
+ private IDTOService<BlobMappingDto> dtoBlobMappingDtoService;
private Logger log = LoggerFactory.getLogger(BlobService.class);
private List<IBlobUploadEventListener> listeners = new ArrayList<>();
private BlobTypingAPI blobAPI;
@@ -109,9 +111,8 @@ public class BlobService implements IBlobService {
// ***************** Constructor ************
public BlobService() {
- if (DtoServiceAccess.getService(BlobMappingDto.class) instanceof IDTOServiceWithMutablePersistence<?>) {
- dtoBlobMappingDtoService = (IDTOServiceWithMutablePersistence<BlobMappingDto>) DtoServiceAccess
- .getService(BlobMappingDto.class);
+ if (DtoServiceAccess.getService(BlobMappingDto.class) instanceof IDTOService<?>) {
+ dtoBlobMappingDtoService = (IDTOService<BlobMappingDto>) DtoServiceAccess.getService(BlobMappingDto.class);
}
this.blobAPI = new BlobTypingAPI();
}
@@ -266,8 +267,9 @@ public class BlobService implements IBlobService {
}
/**
- * Resizes an image into the specified new width and height if they are not '0' and convert them
- * from the incoming byte array to a {@link BufferedImage}.
+ * Resizes an image into the specified new width and height if they are not
+ * '0' and convert them from the incoming byte array to a
+ * {@link BufferedImage}.
*
* @param bytes
* @param newWidth
@@ -278,8 +280,16 @@ public class BlobService implements IBlobService {
*/
private BufferedImage getImage(byte[] bytes, int newWidth, int newHeight) throws IOException {
ByteArrayInputStream bis = new ByteArrayInputStream(bytes);
- Image image = ImageIO.read(bis);
+ BufferedImage image = ImageIO.read(bis);
bis.close();
+ int imageType = 0;
+ if (containsAlphaChannel(image)) {
+ imageType = BufferedImage.TYPE_INT_ARGB;
+ } else if(containsTransparency(image)) {
+ imageType = BufferedImage.TYPE_INT_ARGB_PRE;
+ } else {
+ imageType = BufferedImage.TYPE_INT_RGB;
+ }
/*
* On resolution '0' the newWidth and newHeight is also '0', because no
* scaling is required. But on png files its displaying behaviour on a
@@ -288,12 +298,35 @@ public class BlobService implements IBlobService {
* displaying behaviour.
*/
if (newWidth > 0 && newHeight > 0) {
- image = image.getScaledInstance(newWidth, newHeight, Image.SCALE_AREA_AVERAGING);
+ Image scaledImage = image.getScaledInstance(newWidth, newHeight, Image.SCALE_AREA_AVERAGING);
+ BufferedImage buffered = new BufferedImage(scaledImage.getWidth(null), scaledImage.getHeight(null), imageType);
+ buffered.getGraphics().drawImage(scaledImage, 0, 0, null);
+ return buffered;
+ } else {
+ BufferedImage buffered = new BufferedImage(image.getWidth(null), image.getHeight(null), imageType);
+ buffered.getGraphics().drawImage(image, 0, 0, null);
+ return buffered;
}
- BufferedImage buffered = new BufferedImage(image.getWidth(null), image.getHeight(null),
- BufferedImage.TYPE_INT_RGB);
- buffered.getGraphics().drawImage(image, 0, 0, null);
- return buffered;
+ }
+
+ private static boolean containsAlphaChannel(BufferedImage image) {
+ return image.getColorModel().hasAlpha();
+ }
+
+ private static boolean containsTransparency(BufferedImage image) {
+ for (int i = 0; i < image.getHeight(); i++) {
+ for (int j = 0; j < image.getWidth(); j++) {
+ if (isTransparent(image, j, i)) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ public static boolean isTransparent(BufferedImage image, int x, int y) {
+ int pixel = image.getRGB(x, y);
+ return (pixel >> 24) == 0x00;
}
/**
@@ -349,7 +382,8 @@ public class BlobService implements IBlobService {
private BlobDto getBlobByName(String blobMappingName, int resolutionId, int mimeTypeId) {
if (blobMappingName != null && resolutionId >= 0) {
- IQuery query = new Query(new LAnd(new LCompare.Equal("fileName", blobMappingName), new LCompare.Equal("mimeTypeId", mimeTypeId)));
+ IQuery query = new Query(new LAnd(new LCompare.Equal("fileName", blobMappingName),
+ new LCompare.Equal("mimeTypeId", mimeTypeId)));
Collection<BlobMappingDto> blobMappings = dtoBlobMappingDtoService.find(query);
if (!blobMappings.isEmpty()) {
Iterator<BlobMappingDto> iter = blobMappings.iterator();
@@ -634,7 +668,7 @@ public class BlobService implements IBlobService {
}
return null;
}
-
+
@Override
public String getBase64ImageByName(String name, int resolutionId, String mimeType) {
BlobDto blob = getBlobByName(name, resolutionId, blobAPI.getMimeTypeContentTypeId(mimeType));

Back to the top