Skip to content

Commit

Permalink
Revised version object in back and front-end + Started implementing w…
Browse files Browse the repository at this point in the history
…orkspace modifications
  • Loading branch information
Mathias Schubanz authored and Mathias Schubanz committed Oct 13, 2021
1 parent 507051c commit fa31705
Show file tree
Hide file tree
Showing 40 changed files with 525 additions and 612 deletions.
16 changes: 4 additions & 12 deletions backend/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -158,23 +158,15 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.6</version>
<executions>
<execution>
<id>process-classes</id>
<id>chmod</id>
<phase>process-classes</phase>
<configuration>
<target>
<chmod file="target/classes/lsp/manageLSP.sh" perm="755"/>
<chmod file="target/classes/project/export.sh" perm="755"/>
<chmod file="target/classes/git_connect/commitChanges.sh" perm="755"/>
<chmod file="target/classes/git_connect/getFilesInMergeConflict.sh" perm="755"/>
<chmod file="target/classes/git_connect/getRemoteDirs.sh" perm="755"/>
<chmod file="target/classes/git_connect/getStatus.sh" perm="755"/>
<chmod file="target/classes/git_connect/partialClone.sh" perm="755"/>
<chmod file="target/classes/git_connect/pull.sh" perm="755"/>
<chmod file="target/classes/git_connect/push.sh" perm="755"/>
<chmod file="target/classes/git_connect/useWithSshKey.sh" perm="755"/>
<chmod file="target/classes/lsp/manageLSP.sh" perm="755"/>
<chmod file="target/classes/project/export.sh" perm="755"/>
<chmod file="target/classes/git_connect/*.sh" perm="755"/>
</target>
</configuration>
<goals>
Expand Down
14 changes: 7 additions & 7 deletions backend/src/main/java/de/btu/swt/backend/DataInitializer.java
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ void initData() {

Version metaGrammarVersion = Version.builder()
.description("Not implemented!")
.version("1.0.0-SNAPSHOT")
.versionTag("1.0.0-SNAPSHOT")
.dslExtension("mydsl")
.visibility(VisibilityLevel.PUBLIC)
.project(metaGrammar)
Expand All @@ -147,7 +147,7 @@ void initData() {
Version mdrSimpleGrammarVersion = Version.builder()
.owner(user)
.description("BETA State")
.version("1.0.0-SNAPSHOT")
.versionTag("1.0.0-SNAPSHOT")
.dslExtension("mydsl")
.project(mdrSimpleGrammar)
.languageServer(mdrSimpleServer)
Expand All @@ -165,7 +165,7 @@ void initData() {
Version dummyGrammarVersion = Version.builder()
.owner(admin)
.description("BETA State")
.version("1.0.0-SNAPSHOT")
.versionTag("1.0.0-SNAPSHOT")
.dslExtension("mydsl")
.visibility(VisibilityLevel.PUBLIC)
.project(dummyGrammar)
Expand Down Expand Up @@ -209,23 +209,23 @@ void initData() {
Version project_mdrDsl_Version = Version.builder()
.owner(admin)
.description("Project A")
.version("1.0.0-SNAPSHOT")
.versionTag("1.0.0-SNAPSHOT")
.project(project_mdrDsl)
.grammar(metaGrammarVersion)
.visibility(VisibilityLevel.PUBLIC)
.build();
Version project_mdrSimpleDsl_Version = Version.builder()
.owner(user)
.description("Project B")
.version("1.0.0-SNAPSHOT")
.versionTag("1.0.0-SNAPSHOT")
.project(project_mdrSimpleDsl)
.grammar(mdrSimpleGrammarVersion)
.visibility(VisibilityLevel.PRIVATE)
.build();
Version project_dummyProject_Version = Version.builder()
.owner(admin)
.description("Project Dummy")
.version("1.0.0-SNAPSHOT")
.versionTag("1.0.0-SNAPSHOT")
.project(project_dummyProject)
.grammar(dummyGrammarVersion)
.visibility(VisibilityLevel.PUBLIC)
Expand All @@ -251,7 +251,7 @@ void initData() {
.build();
// File mdrGrammarFile = File.builder()
// .name(mdrGrammar.getName())
// .version(mdrSimpleGrammarVersion)
// .versionTag(mdrSimpleGrammarVersion)
// .build();
File mdrSimpleDslFile = File.builder()
.name("FirstTest")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ public void destroy() {
final ClassLoader classLoader = getClass().getClassLoader();
final File script = new File(Objects.requireNonNull(classLoader.getResource("lsp/manageLSP.sh")).getFile());
log.info("Killing all lsp instances: ");
ScriptRunner.run(script, CommandSupplements.KILL_ALL.toString());
// ScriptRunner.run(script, CommandSupplements.KILL_ALL.toString());
}

private boolean validate(User user, long id, Permissions actions) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ void start() {
String[] params = {
CommandSupplements.START.toString(),
languageServer.getLanguageName(),
languageServer.getVersion().getVersion(),
languageServer.getVersion().getVersionTag(),
String.valueOf(port)};
log.info(ScriptRunner.run(script, params));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ public ResponseEntity create(
}
Project project = projectOptional.get();
if (!project.getVersions().stream()
.noneMatch(version -> version.getVersion().equals(request.getVersion()))) {
.noneMatch(version -> version.getVersionTag().equals(request.getVersionTag()))) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST)
.body("Version name has already been taken.");
}
Expand All @@ -97,7 +97,7 @@ public ResponseEntity create(
return ResponseEntity.status(HttpStatus.BAD_REQUEST)
.body("No grammar referenced.");
}
Optional<Version> optionalGrammar = versionRepository.findById(request.getGrammar().getId());
Optional<Version> optionalGrammar = versionRepository.findById(request.getGrammar().getVersionId());
if (!optionalGrammar.isPresent()) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST)
.body("The referenced grammar does not exist.");
Expand Down
14 changes: 7 additions & 7 deletions backend/src/main/java/de/btu/swt/backend/util/FileExport.java
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ private static Deque<ErroneousFile> createPermanentExports(List<de.btu.swt.backe
Deque<ErroneousFile> result = new LinkedList<>();
List<de.btu.swt.backend.file.File> exportList = new LinkedList<>();
for (de.btu.swt.backend.file.File file : files) {
if (!file.getVersion().getId().equals(version.getId()))
if (!file.getVersion().getVersionId().equals(version.getVersionId()))
continue;
try {
exportList.clear();
Expand Down Expand Up @@ -135,14 +135,14 @@ private static ResponseEntity onValidationError(Deque<ErroneousFile> erroneousFi
String errorLog = erroneousFile.log;
MailSender.getInstance().sendMail(
userDetails.getEmail(),
"MDSE: " + version.getProject().getName() + ":" + version.getVersion() + ":" + erroneousFile.file.getFileName(),
"MDSE: " + version.getProject().getName() + ":" + version.getVersionTag() + ":" + erroneousFile.file.getFileName(),
"",
fileName,
errorLog);
return getFileResponse(errorLog, fileName, HttpStatus.CONFLICT);
}

String fileName = version.getProject().getName() + ":" + version.getVersion();
String fileName = version.getProject().getName() + ":" + version.getVersionTag();
ZipFile zip = new ZipFile(new java.io.File(uniqueSubDir, fileName + ".zip"));
for (ErroneousFile file : erroneousFiles) {
String errorLog = file.log;
Expand All @@ -152,7 +152,7 @@ private static ResponseEntity onValidationError(Deque<ErroneousFile> erroneousFi
}
MailSender.getInstance().sendMail(
userDetails.getEmail(),
"MDSE: " + version.getProject().getName() + ":" + version.getVersion(),
"MDSE: " + version.getProject().getName() + ":" + version.getVersionTag(),
"",
zip.getFile());
return FileExport.getFileResponse(zip.getFile(), HttpStatus.CONFLICT);
Expand All @@ -169,7 +169,7 @@ public static ResponseEntity fetchExports(List<de.btu.swt.backend.file.File> fil
" generated");
if (children.size() == 1)
return FileExport.getFileResponse(children.get(0).getAbsoluteFile(), HttpStatus.OK);
String fileName = version.getProject().getName() + ":" + version.getVersion();
String fileName = version.getProject().getName() + ":" + version.getVersionTag();
java.io.File uniqueSubDir = FileExport.createUniqueSubDir(userDetails.getUsername(), Storage.TMP);
try {
ZipFile zip = new ZipFile(new java.io.File(uniqueSubDir, fileName + ".zip"));
Expand All @@ -195,7 +195,7 @@ public static ResponseEntity export(List<Version> versions,
try {
version.exportAll(uniqueSubDir);
} catch (Version.ModelValidationException e) {
String logName = version.getProject().getName() + ":" + version.getVersion();
String logName = version.getProject().getName() + ":" + version.getVersionTag();
//oder log stattdessen dem archiv hinzufügen?
return FileExport.getFileResponse(e.getMessage(), logName + ".log", HttpStatus.CONFLICT);
}
Expand Down Expand Up @@ -224,7 +224,7 @@ public static ResponseEntity export(List<Version> versions,

public static ResponseEntity getRawFiles(Version version, UserDetails userDetails) {
java.io.File uniqueSubDir = FileExport.createUniqueSubDir(userDetails.getUsername(), Storage.TMP);
String fileName = getUniqueName(version.getProject().getName() + "_" + version.getVersion(), ".zip");
String fileName = getUniqueName(version.getProject().getName() + "_" + version.getVersionTag(), ".zip");
ZipFile zip = new ZipFile(new java.io.File(uniqueSubDir, fileName));
try {
for (de.btu.swt.backend.file.File file : version.getFiles()) {
Expand Down
25 changes: 17 additions & 8 deletions backend/src/main/java/de/btu/swt/backend/version/Version.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,15 @@
@Entity
public class Version {

@JsonIgnore
public static final String GENERAL_FILES_DIRECTORY = "files";
@JsonIgnore
public static final String RAW_FILES_DIRECTORY = "src";
@JsonIgnore
public static final String EXPORT_FILES_DIRECTORY = "gen";
@JsonIgnore
public static final String REMOTE_FILES_DIRECTORY = "remotes";

public class ModelValidationException extends Exception {
protected ModelValidationException(String message) {
super(message);
Expand All @@ -48,14 +57,14 @@ protected ModelValidationException(String message) {

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private Long versionId;
@NonNull
@ManyToOne
@JsonIgnore
private User owner;
private String description;
@NonNull
private String version;
private String versionTag;
@NonNull
private VisibilityLevel visibility = VisibilityLevel.PUBLIC;
@CreationTimestamp
Expand All @@ -82,7 +91,7 @@ protected ModelValidationException(String message) {
public Long getGrammarId() {
if (grammar == null)
return null;
return grammar.getId();
return grammar.getVersionId();
}

@JsonProperty(access = JsonProperty.Access.WRITE_ONLY)
Expand Down Expand Up @@ -190,7 +199,7 @@ public Path getRemoteDirectory() {

@JsonIgnore
public Path getRoot() {
Path path = Storage.ROOT.resolve(project.getLevel().name() + "_projects" + java.io.File.separator + id + "_" + project.getName() + java.io.File.separator + version);
Path path = Storage.ROOT.resolve(project.getLevel().name() + "_projects" + java.io.File.separator + versionId + "_" + project.getName() + java.io.File.separator + versionTag);
java.io.File file = path.toFile();
if (!file.exists())
file.mkdirs();
Expand All @@ -202,7 +211,7 @@ public java.io.File export(List<File> files, java.io.File uniqueDir) throws Mode
if (files.isEmpty())
return null;

String subDir = project.getName() + java.io.File.separator + version;
String subDir = project.getName() + java.io.File.separator + versionTag;
String srcDir = uniqueDir.getAbsolutePath() + java.io.File.separator + "src" + java.io.File.separator + subDir;
String targetDir = uniqueDir.getAbsolutePath() + java.io.File.separator + "target" + java.io.File.separator + subDir;
java.io.File sources = new java.io.File(srcDir);
Expand All @@ -213,7 +222,7 @@ public java.io.File export(List<File> files, java.io.File uniqueDir) throws Mode
}

for (File file : files) {
if (file.getVersion().getId() != this.id)
if (file.getVersion().getVersionId() != this.versionId)
continue;
java.io.File m0File = new java.io.File(file.getDir().toFile(), file.getFileName()).getAbsoluteFile();
if (!m0File.exists())
Expand Down Expand Up @@ -242,10 +251,10 @@ private void callExportScript(String sourceDir, String targetDir) throws ModelVa
final java.io.File pomDir = new java.io.File(Objects.requireNonNull(classLoader.getResource("project")).getFile());

String[] scriptParams = {
String.valueOf(id),
String.valueOf(versionId),
pomDir.getAbsolutePath(),
grammar.getLanguageServer().getLanguageName(),
grammar.getVersion(),
grammar.getVersionTag(),
sourceDir,
targetDir
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ public ResponseEntity<?> create(@AuthenticationPrincipal UserDetails userDetails
}
newProject.setOwner(user);
projectRepository.save(newProject);
Optional<Version> optionalGrammar = versionRepository.findById(newVersion.getGrammar().getId());
Optional<Version> optionalGrammar = versionRepository.findById(newVersion.getGrammar().getVersionId());
if (!optionalGrammar.isPresent()) {
return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("The selected grammar does not exist");
}
Expand All @@ -104,6 +104,8 @@ public ResponseEntity<?> create(@AuthenticationPrincipal UserDetails userDetails
newVersion.addUser(user, Permissions.OWNER);
newVersion.setOwner(user);
newVersion = versionRepository.save(newVersion);

// newVersion.configureVersionWorkspace();
return ResponseEntity.ok(new VersionDTOBuilder(newVersion).build());
}

Expand Down Expand Up @@ -286,7 +288,7 @@ public ResponseEntity<?> export(@AuthenticationPrincipal UserDetails userDetails
public ResponseEntity<?> exportVersions(@AuthenticationPrincipal User user,
@Valid @RequestBody Version[] requestVersions) {
List<Version> versions = Arrays.stream(requestVersions)
.map(version -> versionRepository.findById(version.getId()).get()).filter(Objects::nonNull)
.map(version -> versionRepository.findById(version.getVersionId()).get()).filter(Objects::nonNull)
.filter(version -> version.getPermissions(user).contains(Permissions.EXPORT_FILES))
.collect(Collectors.toList());
return FileExport.export(versions, user);
Expand Down Expand Up @@ -392,7 +394,7 @@ public ResponseEntity<?> uploadFiles(@AuthenticationPrincipal UserDetails userDe
}
String[] fileNames = modifiedFiles.stream().map(File::getName).toArray(String[]::new);
fileRepository.saveAll(modifiedFiles);
version = versionRepository.getOne(version.getId());
version = versionRepository.getOne(version.getVersionId());
try {
gitService.commitPullAndPushChanges(modifiedFiles.toArray(new File[modifiedFiles.size()]),
"added/edited " + String.join(", ", fileNames), user, version);
Expand Down Expand Up @@ -477,7 +479,7 @@ private void oneSidedDeleteConflict(List<File> files, boolean deletedOnRemote) t

private File putFileContent(User user, long id, String newContent, long versionId) throws IOException {
File file = fileRepository.getOne(id);
if (file.getVersion().getId() != versionId) {
if (file.getVersion().getVersionId() != versionId) {
return null;
}
file.setFileContent(newContent);
Expand All @@ -495,7 +497,7 @@ public ResponseEntity<?> deleteFiles(@AuthenticationPrincipal User user, @PathVa
}
Version version = versionRepository.getOne(versionId);
List<File> files = Arrays.stream(requestedFiles).map(file -> fileRepository.findById(file.getId()).get())
.filter(Objects::nonNull).filter(file -> file.getVersion().getId() == versionId)
.filter(Objects::nonNull).filter(file -> file.getVersion().getVersionId() == versionId)
.collect(Collectors.toList());
for (File file : files) {
file.setStatus(FileStatus.UNCHECKED);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,26 +10,29 @@ public VersionDTOBuilder(Version obj) {
withFiles();
withLanguageServer();
withGrammar();
// System.err.println("#####################");
// System.err.println(((Version)this.obj).toString());
// System.err.println("#####################");
}

private VersionDTOBuilder withProject() {
putSingle("project", obj.getProject());
putSingle("project", this.obj.getProject());
deleteField(new String[]{"project", "versions"});
return this;
}

private VersionDTOBuilder withFiles() {
putCollection("files", obj.getFiles());
putCollection("files", this.obj.getFiles());
return this;
}

private VersionDTOBuilder withLanguageServer() {
putSingle("languageServer", obj.getLanguageServer());
putSingle("languageServer", this.obj.getLanguageServer());
return this;
}

private VersionDTOBuilder withGrammar() {
Version grammar = obj.getGrammar();
Version grammar = this.obj.getGrammar();
if (grammar != null) {
putSingle("grammar", new VersionDTOBuilder(grammar).build());
}
Expand Down
Empty file.
2 changes: 1 addition & 1 deletion editor/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -8,9 +8,9 @@
"@theia/messages": "next",
"@theia/navigator": "next",
"@theia/outline-view": "next",
"@theia/preferences": "next",
"@theia/plugin-ext": "next",
"@theia/plugin-ext-vscode": "next",
"@theia/preferences": "next",
"@theia/preview": "next",
"@theia/search-in-workspace": "next",
"@theia/terminal": "next",
Expand Down
6 changes: 3 additions & 3 deletions editor/plugins/dsl-extension/yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@


"@babel/code-frame@^7.0.0":
version "7.14.5"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb"
integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw==
version "7.15.8"
resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.15.8.tgz#45990c47adadb00c03677baa89221f7cc23d2503"
integrity sha512-2IAnmn8zbvC/jKYhq5Ki9I+DwjlrtMPUCH/CpHvqI4dNnlwHwsxoIhlc8WcYY5LSYknXQtAlFYuHfqAFCvQ4Wg==
dependencies:
"@babel/highlight" "^7.14.5"

Expand Down
Loading

0 comments on commit fa31705

Please sign in to comment.