Skip to content
Snippets Groups Projects
Commit 274bf430 authored by Thomas's avatar Thomas
Browse files

Fixed file upload, added tags loader

parent 87a5fe3a
Branches
No related tags found
No related merge requests found
...@@ -21,7 +21,7 @@ public interface IModelManager { ...@@ -21,7 +21,7 @@ public interface IModelManager {
void removeLayer(long id, User user) throws Exception; void removeLayer(long id, User user) throws Exception;
void addFile(MultipartFile file, long id, User user) throws Exception; void addFile(MultipartFile file, long id, User user) throws Exception;
void addLayerFile(MultipartFile file, long id, User user) throws Exception; void addLayerFile(MultipartFile file, long modelId, String name, User user) throws Exception;
void addTag(TagMessage message); void addTag(TagMessage message);
......
...@@ -33,43 +33,27 @@ public class ModelManager implements IModelManager { ...@@ -33,43 +33,27 @@ public class ModelManager implements IModelManager {
model.setShortDescription(message.getShortDescription()); model.setShortDescription(message.getShortDescription());
model.setLongDescription(message.getLongDescription()); model.setLongDescription(message.getLongDescription());
System.err.println("[MODEL MANAGER] oui 2"); System.err.println("[MODEL MANAGER] add model 2");
if (message.getTags() != null) { if (message.getTags() != null) {
System.err.println("[MODEL MANAGER] oui 2.1"); System.err.println("[MODEL MANAGER] add model new tag 2.1");
Set<Tag> tags = new HashSet<Tag>(); Set<Tag> tags = new HashSet<Tag>();
for (String tagName : message.getTags()) { for (String tagName : message.getTags()) {
Tag tag = dao.getTagByName(tagName); Tag tag = dao.getTagByName(tagName);
tags.add(tag); tags.add(tag);
} }
System.err.println("[MODEL MANAGER] oui 2.2"); System.err.println("[MODEL MANAGER] add model new tag 2.2");
model.setTags(tags); model.setTags(tags);
} }
System.err.println("[MODEL MANAGER] oui 3"); System.err.println("[MODEL MANAGER] add model 3");
if (message.getCustomLayers() != null) {
System.err.println("[MODEL MANAGER] oui 3.1");
Set<CustomLayer> layers = new HashSet<CustomLayer>();
for (String layerName : message.getCustomLayers()) {
System.err.println("[MODEL MANAGER] new layer 1"+layerName);
CustomLayer layer = new CustomLayer();
layer.setName(layerName);
System.err.println("[MODEL MANAGER] new layer 2"+layerName);
layers.add(layer);
}
System.err.println("[MODEL MANAGER] oui 3.2");
model.setCustomLayers(layers);
}
System.err.println("[MODEL MANAGER] oui 4");
model.setVotes(0); model.setVotes(0);
model.setAdded(new Date()); model.setAdded(new Date());
model.setLastModified(new Date()); model.setLastModified(new Date());
model.setAuthor(user); model.setAuthor(user);
System.err.println("[MODEL MANAGER] oui 5"); System.err.println("[MODEL MANAGER] add model 4");
try { try {
dao.addModel(model); dao.addModel(model);
...@@ -77,19 +61,24 @@ public class ModelManager implements IModelManager { ...@@ -77,19 +61,24 @@ public class ModelManager implements IModelManager {
System.err.println("[MODEL MANAGER] Add model error "+e.getMessage()); System.err.println("[MODEL MANAGER] Add model error "+e.getMessage());
} }
System.err.println("[MODEL MANAGER] oui 6"); System.err.println("[MODEL MANAGER] add model 5");
return model.getId(); return model.getId();
} }
@Override @Override
public void addFile(MultipartFile file, long id, User user) throws Exception { public void addFile(MultipartFile file, long id, User user) throws Exception {
System.err.println("[MODEL MANAGER] add model file 1");
Model model = dao.findModel(id); Model model = dao.findModel(id);
if (model == null) if (model == null)
throw new Exception("Unknown model"); throw new Exception("Unknown model");
System.err.println("[MODEL MANAGER] add model file 2");
model.setFile(file.getBytes()); model.setFile(file.getBytes());
System.err.println("[MODEL MANAGER] add model file 3");
model.setFileType(file.getContentType()); model.setFileType(file.getContentType());
System.err.println("[MODEL MANAGER] add model file 4");
dao.updateModel(model); dao.updateModel(model);
System.err.println("[MODEL MANAGER] add model file 5");
} }
@Override @Override
...@@ -170,15 +159,21 @@ public class ModelManager implements IModelManager { ...@@ -170,15 +159,21 @@ public class ModelManager implements IModelManager {
} }
@Override @Override
public void addLayerFile(MultipartFile file, long id, User user) throws Exception { public void addLayerFile(MultipartFile file, long modelId, String name, User user) throws Exception {
CustomLayer layer = dao.findLayer(id); Model model = dao.findModel(modelId);
if (layer == null) if (model == null)
throw new Exception("Unknown layer"); throw new Exception("Unknown model");
if (!isLayerAuthor(layer, user)) if (!isModelAuthor(model, user))
throw new Exception("Not the author"); throw new Exception("Not the author");
CustomLayer layer = new CustomLayer();
layer.setName(name);
layer.setFile(file.getBytes()); layer.setFile(file.getBytes());
layer.setModel(model);
dao.updateLayer(layer); model.getCustomLayers().add(layer);
dao.updateModel(model);
} }
private boolean isLayerAuthor(CustomLayer layer, User user) { private boolean isLayerAuthor(CustomLayer layer, User user) {
......
...@@ -73,16 +73,16 @@ public class Model implements Serializable{ ...@@ -73,16 +73,16 @@ public class Model implements Serializable{
private String fileType; private String fileType;
@Basic @Basic
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.MERGE)
private User author; private User author;
@Basic @Basic
@ManyToMany(fetch = FetchType.LAZY,cascade = CascadeType.ALL) @ManyToMany(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST})
@JoinTable(name = "model_tag") @JoinTable(name = "model_tag")
private Set<Tag> tags; private Set<Tag> tags;
@Basic @Basic
@OneToMany(fetch = FetchType.LAZY,cascade = CascadeType.ALL) @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
@JoinTable(name = "model_customLayers") @JoinTable(name = "model_customLayers")
private Set<CustomLayer> customLayers; private Set<CustomLayer> customLayers;
......
...@@ -27,7 +27,7 @@ public class Tag implements Serializable{ ...@@ -27,7 +27,7 @@ public class Tag implements Serializable{
private Long id; private Long id;
@Basic @Basic
@ManyToOne(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @ManyToOne(fetch = FetchType.LAZY, cascade = {CascadeType.MERGE, CascadeType.PERSIST})
private TagCategory category; private TagCategory category;
@Basic @Basic
...@@ -35,7 +35,7 @@ public class Tag implements Serializable{ ...@@ -35,7 +35,7 @@ public class Tag implements Serializable{
private String name; private String name;
@Basic @Basic
@ManyToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL) @ManyToMany(fetch = FetchType.LAZY)
private Set<Model> models; private Set<Model> models;
public Tag() { public Tag() {
......
...@@ -58,7 +58,7 @@ public class User implements Serializable{ ...@@ -58,7 +58,7 @@ public class User implements Serializable{
private Role role; private Role role;
@Basic @Basic
@OneToMany(mappedBy = "author", fetch = FetchType.LAZY, cascade = CascadeType.ALL) @OneToMany(mappedBy = "author", fetch = FetchType.LAZY, cascade = CascadeType.ALL, orphanRemoval = true)
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"}) @JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
private Set<Model> models; private Set<Model> models;
......
package mozen.utils; package mozen.utils;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.Date; import java.util.Date;
import java.util.HashSet; import java.util.HashSet;
import java.util.Set; import java.util.Set;
...@@ -53,29 +57,34 @@ public class DatabaseFiller { ...@@ -53,29 +57,34 @@ public class DatabaseFiller {
Model m1 = new Model(); Model m1 = new Model();
m1.setAuthor(u1); m1.setAuthor(u1);
m1.setName("model 1"); m1.setName("Model Testo");
m1.setShortDescription("short description 1"); m1.setShortDescription("Short description for model testo");
m1.setLongDescription("# README \n model 1"); m1.setLongDescription("# README \n model testo");
m1.setVotes(0); m1.setVotes(0);
m1.setAdded(new Date()); m1.setAdded(new Date());
m1.setLastModified(new Date()); m1.setLastModified(new Date());
Set<Tag> m1tags = new HashSet<Tag>(); /*Set<Tag> m1tags = new HashSet<Tag>();
Tag t1 = new Tag();
TagCategory ca1 = new TagCategory(); TagCategory ca1 = new TagCategory();
ca1.setName("Layer"); ca1.setName("Layer");
Tag t1 = new Tag();
t1.setCategory(ca1); t1.setCategory(ca1);
t1.setName("Conv2D"); t1.setName("Conv2D");
Tag t2 = new Tag();
TagCategory ca2 = new TagCategory(); TagCategory ca2 = new TagCategory();
ca2.setName("Architecture"); ca2.setName("Architecture");
Tag t2 = new Tag();
t2.setCategory(ca2); t2.setCategory(ca2);
t2.setName("VGG19"); t2.setName("VGG19");
m1tags.add(t1); m1tags.add(t1);
m1tags.add(t2); m1tags.add(t2);
m1.setTags(m1tags); m1.setTags(m1tags);
*/
m1.setTags(tagLoader("tags.txt"));
Set<CustomLayer> m1layers = new HashSet<CustomLayer>(); Set<CustomLayer> m1layers = new HashSet<CustomLayer>();
CustomLayer l1 = new CustomLayer(); CustomLayer l1 = new CustomLayer();
...@@ -94,4 +103,37 @@ public class DatabaseFiller { ...@@ -94,4 +103,37 @@ public class DatabaseFiller {
daoModel.addModel(m1); daoModel.addModel(m1);
} }
Set<Tag> tagLoader(String filePath) {
Set<Tag> tags = new HashSet<Tag>();
File file = new File(filePath);
FileReader fr;
try {
fr = new FileReader(file);
BufferedReader br = new BufferedReader(fr);
String line;
while ((line = br.readLine()) != null) {
System.out.println("[DB FILLER] adding category "+line);
TagCategory category = new TagCategory();
category.setName(line);
line = br.readLine();
while (!line.equals("#")) {
System.out.println("[DB FILLER] adding tag "+line+" to "+category.getName());
Tag tag = new Tag();
tag.setCategory(category);
tag.setName(line);
tags.add(tag);
line = br.readLine();
}
}
fr.close();
} catch (IOException e) {
e.printStackTrace();
}
return tags;
}
} }
\ No newline at end of file
...@@ -127,7 +127,7 @@ public class ModelController { ...@@ -127,7 +127,7 @@ public class ModelController {
} }
@PostMapping("/upload") @PostMapping("/upload")
public ResponseEntity<ResponseMessage> uploadModelFile(@RequestParam(value = "id", required = true) Long id, @RequestParam("file") MultipartFile file) { public ResponseEntity<ResponseMessage> uploadModelFile(@RequestParam("file") MultipartFile file, @RequestParam(value = "id", required = true) Long id) {
ResponseMessage response = new ResponseMessage(false, ""); ResponseMessage response = new ResponseMessage(false, "");
User user = getUser(); User user = getUser();
if(user == null) { if(user == null) {
...@@ -137,6 +137,7 @@ public class ModelController { ...@@ -137,6 +137,7 @@ public class ModelController {
} }
try { try {
System.err.println("[MODEL CONTROLLER] model file upload n:"+file.getName());
modelManager.addFile(file, id, user); modelManager.addFile(file, id, user);
} catch (Exception e) { } catch (Exception e) {
response.setError(true); response.setError(true);
...@@ -164,6 +165,30 @@ public class ModelController { ...@@ -164,6 +165,30 @@ public class ModelController {
return ResponseEntity.ok(response); return ResponseEntity.ok(response);
} }
@PostMapping("/uploadLayer")
public ResponseEntity<ResponseMessage> uploadLayerFile(
@RequestParam("file") MultipartFile file,
@RequestParam(value = "id", required = true) Long id,
@RequestParam(value = "name", required = true) String name) {
ResponseMessage response = new ResponseMessage(false, "");
User user = getUser();
if(user == null) {
response.setError(true);
response.setMessage("User unknown");
return ResponseEntity.ok(response);
}
try {
System.err.println("[MODEL CONTROLLER] layer file upload f:"+file.getName()+" n:"+name);
modelManager.addLayerFile(file, id, name, user);
} catch (Exception e) {
response.setError(true);
response.setMessage(e.getMessage());
}
return ResponseEntity.ok(response);
}
private User getUser() { private User getUser() {
Authentication auth = SecurityContextHolder.getContext().getAuthentication(); Authentication auth = SecurityContextHolder.getContext().getAuthentication();
......
tags.txt 0 → 100644
Task
Classification
#
Dataset
Cifar10
Cifar100
SVHN
MNIST
#
Architecture
VGG19
Lenet
Fully connected 500
Resnet 20
Resnet 50
Tensor Train base
#
Layers
Dense
Conv2D
Batchnorm
MaxPooling
#
Other
(4096x4096)
(2048x2048)
seed:1
seed:2
seed:3
(deprecated)
#
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment