diff options
author | Ralf Mollik | 2019-04-25 12:37:49 +0000 |
---|---|---|
committer | Ralf Mollik | 2019-04-25 12:37:49 +0000 |
commit | ebb479d319216b3735ee73443c5d6456ca475845 (patch) | |
tree | e02cc649dca5f2960bd488ee1311a70105342bd2 | |
parent | b3ecd42329492e14aaca69d7af17bc15fa0c588b (diff) | |
download | org.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>
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)); |