diff --git a/mozen/src/main/java/mozen/business/LayerManager.java b/mozen/src/main/java/mozen/business/LayerManager.java index faeca3dee7b1b7661ab86f15db8470b13f97f347..a5017073b9d1fc2f19be6c7e10462fa5081bd8b6 100644 --- a/mozen/src/main/java/mozen/business/LayerManager.java +++ b/mozen/src/main/java/mozen/business/LayerManager.java @@ -12,6 +12,7 @@ import mozen.model.Model; import mozen.model.User; import mozen.repos.CustomLayerRepository; import mozen.repos.ModelRepository; +import mozen.utils.Md5Utils; import mozen.utils.UserHelper; @Service @@ -41,7 +42,7 @@ public class LayerManager implements ILayerManager{ CustomLayer layer = new CustomLayer(); layer.setName(name); - layer.setChecksum(crc32.getValue()); + layer.setChecksum(Md5Utils.getMD5(file)); layer.setFile(file.getBytes()); layer.setFileType(file.getContentType()); layer.setModel(model); diff --git a/mozen/src/main/java/mozen/business/ModelManager.java b/mozen/src/main/java/mozen/business/ModelManager.java index aa10a51340a5b8d8a5324a115d9eab22666f77b8..2dc243625797e813e8824fdcf2d6a116392ef4ac 100644 --- a/mozen/src/main/java/mozen/business/ModelManager.java +++ b/mozen/src/main/java/mozen/business/ModelManager.java @@ -4,8 +4,6 @@ import java.util.Collection; import java.util.Date; import java.util.HashSet; import java.util.Set; -import java.util.zip.CRC32; -import java.util.zip.Checksum; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; @@ -22,6 +20,7 @@ import mozen.model.Tag; import mozen.model.User; import mozen.repos.ModelRepository; import mozen.repos.TagRepository; +import mozen.utils.Md5Utils; import mozen.utils.UserHelper; @Service @@ -62,31 +61,30 @@ public class ModelManager implements IModelManager { model.setLastModified(new Date()); model.setAuthor(user); - try { - modelRepo.save(model); - } catch (Exception e) { - System.err.println("[MODEL MANAGER] Add model error " + e.getMessage()); - } + modelRepo.save(model); return model.getId(); } @Override public void addModelFile(MultipartFile file, long id, User user) throws Exception { + System.err.println("[MODEL MANAGER] add model file 0"); Model model = modelRepo.findById(id).get(); - + System.err.println("[MODEL MANAGER] add model file 1"); if (model == null) throw new Exception("Unknown model"); if (!UserHelper.isAuthor(model.getAuthor(), user)) throw new Exception("Not the author"); - - Checksum crc32 = new CRC32(); - crc32.update(file.getBytes(), 0, file.getBytes().length); - model.setChecksum(crc32.getValue()); + + System.err.println("[MODEL MANAGER] add model file 2"); + model.setChecksum(Md5Utils.getMD5(file)); model.setFile(file.getBytes()); model.setFileType(file.getContentType()); + System.err.println("[MODEL MANAGER] add model file 3"); + modelRepo.save(model); + System.err.println("[MODEL MANAGER] add model file 4"); } @Override diff --git a/mozen/src/main/java/mozen/messages/ModelMessage.java b/mozen/src/main/java/mozen/messages/ModelMessage.java index c77835cec397b5c2f301febc194a189b40830a69..b8895ecccf2ad1dcc671adf589b5960afb87e466 100644 --- a/mozen/src/main/java/mozen/messages/ModelMessage.java +++ b/mozen/src/main/java/mozen/messages/ModelMessage.java @@ -9,7 +9,7 @@ public class ModelMessage implements Serializable { private static final long serialVersionUID = 1L; @NotNull - @Size(min = 3, max = 30) + @Size(min = 3, max = 100) private String name; @Size(min = 0, max = 200) @@ -22,7 +22,7 @@ public class ModelMessage implements Serializable { private String [] customLayers; - private int performance; + private double performance; private String performanceUnit; @@ -31,7 +31,7 @@ public class ModelMessage implements Serializable { public ModelMessage() { } - public ModelMessage(String name, String shortDescription, String longDescription, String[] tags, String[] customLayers, int performance, String performanceUnit, int parameterCount) { + public ModelMessage(String name, String shortDescription, String longDescription, String[] tags, String[] customLayers, double performance, String performanceUnit, int parameterCount) { this.name = name; this.shortDescription = shortDescription; this.longDescription = longDescription; @@ -83,11 +83,11 @@ public class ModelMessage implements Serializable { this.customLayers = customLayers; } - public int getPerformance() { + public double getPerformance() { return this.performance; } - public void setPerformance(int performance) { + public void setPerformance(double performance) { this.performance = performance; } diff --git a/mozen/src/main/java/mozen/model/CustomLayer.java b/mozen/src/main/java/mozen/model/CustomLayer.java index b2e1e218d3659ccafe47da4683400b60e1cfd480..d6b35ce6fd3b794171ee2114fb9677e463e91290 100644 --- a/mozen/src/main/java/mozen/model/CustomLayer.java +++ b/mozen/src/main/java/mozen/model/CustomLayer.java @@ -39,7 +39,7 @@ public class CustomLayer implements Serializable{ @Basic @Column - private Long checksum; + private String checksum; @Basic @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @@ -48,7 +48,7 @@ public class CustomLayer implements Serializable{ public CustomLayer() { } - public CustomLayer(Long id, String name, byte[] file, String fileType, Long checksum, Model model) { + public CustomLayer(Long id, String name, byte[] file, String fileType, String checksum, Model model) { this.id = id; this.name = name; this.file = file; @@ -100,11 +100,11 @@ public class CustomLayer implements Serializable{ this.model = model; } - public Long getChecksum() { + public String getChecksum() { return this.checksum; } - public void setChecksum(Long checksum) { + public void setChecksum(String checksum) { this.checksum = checksum; } diff --git a/mozen/src/main/java/mozen/model/Model.java b/mozen/src/main/java/mozen/model/Model.java index 48fe0a2346ee082c1aad1c84861ad0d7ea504423..a8eb93eccd962ce2cfdf83985366f3886fb0ce11 100644 --- a/mozen/src/main/java/mozen/model/Model.java +++ b/mozen/src/main/java/mozen/model/Model.java @@ -37,7 +37,7 @@ public class Model implements Serializable{ @Basic @Column(nullable = false, unique = true) @NotNull - @Size(min = 3, max = 30) + @Size(min = 3, max = 100) private String name; @Basic @@ -86,7 +86,7 @@ public class Model implements Serializable{ @Basic @Column - private Long checksum; + private String checksum; @Basic @Column @@ -113,7 +113,7 @@ public class Model implements Serializable{ public Model() { } - public Model(Long id, String name, String shortDescription, String longDescription, Date added, Date lastModified, int votes, double performance, String performanceUnit, int parameterCount, byte[] file, String fileType, Long checksum, boolean isVerified, User author, Set<Tag> tags, Set<CustomLayer> customLayers, Set<Comment> comments) { + public Model(Long id, String name, String shortDescription, String longDescription, Date added, Date lastModified, int votes, double performance, String performanceUnit, int parameterCount, byte[] file, String fileType, String checksum, boolean isVerified, User author, Set<Tag> tags, Set<CustomLayer> customLayers, Set<Comment> comments) { this.id = id; this.name = name; this.shortDescription = shortDescription; @@ -255,11 +255,11 @@ public class Model implements Serializable{ this.parameterCount = parameterCount; } - public Long getChecksum() { + public String getChecksum() { return this.checksum; } - public void setChecksum(Long checksum) { + public void setChecksum(String checksum) { this.checksum = checksum; } diff --git a/mozen/src/main/java/mozen/utils/Md5Utils.java b/mozen/src/main/java/mozen/utils/Md5Utils.java new file mode 100644 index 0000000000000000000000000000000000000000..963b7205605dbf01cb5506d86483f90bb8261168 --- /dev/null +++ b/mozen/src/main/java/mozen/utils/Md5Utils.java @@ -0,0 +1,22 @@ +package mozen.utils; + +import java.io.IOException; +import java.math.BigInteger; +import java.security.MessageDigest; +import java.security.NoSuchAlgorithmException; + +import org.springframework.web.multipart.MultipartFile; + +public class Md5Utils { + public static String getMD5(MultipartFile file) { + try { + byte[] uploadBytes = file.getBytes(); + MessageDigest md5 = MessageDigest.getInstance("MD5"); + byte[] digest = md5.digest(uploadBytes); + return new BigInteger(1, digest).toString(16); + } catch (NoSuchAlgorithmException | IOException e) { + e.printStackTrace(); + return null; + } + } +} \ No newline at end of file diff --git a/mozen/src/main/java/mozen/web/ModelController.java b/mozen/src/main/java/mozen/web/ModelController.java index ed7e5b39020273a0aadc357a297ff4d8466b04de..6fab5277596463a1d0352bff6692145126db6441 100644 --- a/mozen/src/main/java/mozen/web/ModelController.java +++ b/mozen/src/main/java/mozen/web/ModelController.java @@ -151,7 +151,7 @@ public class ModelController { } try { - System.err.println("[MODEL CONTROLLER] model file upload n:"+file.getName()); + System.err.println("[MODEL CONTROLLER] model file upload n:"+file.getName()+" id:"+id); modelManager.addModelFile(file, id, user); } catch (Exception e) { response.setError(true);