Skip to content
7 changes: 7 additions & 0 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -99,6 +99,13 @@
<version>1.8</version>
</dependency>

<dependency>
<groupId>org.antlr</groupId>
<artifactId>ST4</artifactId>
<version>4.3</version>
<scope>compile</scope>
</dependency>

<!-- Lombok (Automatic Getter/Setter) -->

<dependency>
Expand Down
20 changes: 0 additions & 20 deletions src/main/java/com/patternpedia/api/PatternPediaAPI.java
Original file line number Diff line number Diff line change
@@ -1,50 +1,30 @@
package com.patternpedia.api;

import com.patternpedia.api.rest.controller.UserController;
import com.patternpedia.api.service.IssueService;
import com.vladmihalcea.hibernate.type.util.Configuration;
import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import io.swagger.v3.oas.annotations.info.Contact;
import io.swagger.v3.oas.annotations.info.Info;
import io.swagger.v3.oas.annotations.info.License;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.CommandLineRunner;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import org.springframework.web.bind.annotation.RestController;


@EnableTransactionManagement
@Slf4j
@RestController
@SpringBootApplication
@OpenAPIDefinition(info = @Info(title = "pattern-atlas-api", version = "1.0", contact = @Contact(url = "https://github.com/PatternAtlas/pattern-atlas-api", name = "Pattern Atlas API")))
public class PatternPediaAPI implements CommandLineRunner {

@Autowired
private UserController userController;

@Autowired
private IssueService issueService;

public static void main(String[] args) {
System.setProperty(Configuration.PropertyKey.PRINT_BANNER.getKey(), Boolean.FALSE.toString());
SpringApplication.run(PatternPediaAPI.class, args);
}

@Override
public void run(String... args) {

log.info("PatternPediaAPI is up");
// Used this for testing purposes, will be deleted in the final build
// userController.defaultUsers();
// Issue issue = new Issue();
// issue.setUri("uri");
// issue.setName("name");
// issue.setDescription("description");
// Issue p = issueService.createIssue(issue);
// log.info(p.toString());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package com.patternpedia.api.entities.designmodel;

import com.patternpedia.api.rest.model.FileDTO;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NonNull;
import lombok.RequiredArgsConstructor;

import java.util.HashMap;
import java.util.Map;


@Data
public class AggregationData {

private DesignModelPatternInstance source;

private DesignModelPatternInstance target;

private DesignModelPatternEdge edge;

private Map<String, Object> templateContext = new HashMap<>();

private FileDTO result;


public AggregationData(DesignModelPatternInstance source, DesignModelPatternInstance target, DesignModelPatternEdge edge) {
this.source = source;
this.target = target;
this.edge = edge;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.patternpedia.api.entities.designmodel;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.springframework.hateoas.server.core.Relation;

import javax.persistence.*;
import java.util.List;
import java.util.UUID;


@Entity
@Data
@NoArgsConstructor
@EqualsAndHashCode
@Relation(value = "concreteSolution", collectionRelation = "concreteSolutions")
public class ConcreteSolution {

@Id
@GeneratedValue(generator = "pg-uuid")
protected UUID id;

@Column(nullable = false)
private String patternUri;

private String name;

@ElementCollection
private List<String> properties;

private String templateUri;

private String aggregatorType;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
package com.patternpedia.api.entities.designmodel;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.patternpedia.api.entities.EntityWithURI;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import javax.persistence.*;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;

@Entity
@Data
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class DesignModel extends EntityWithURI {

private URL logo;

@JsonIgnore
@OneToMany(mappedBy = "designModel", cascade = CascadeType.ALL, orphanRemoval = true)
private List<DesignModelPatternInstance> patterns = new ArrayList<>();

@JsonIgnore
@OneToMany(mappedBy = "designModel", cascade = CascadeType.ALL, orphanRemoval = true)
private List<DesignModelPatternEdge> directedEdges;

@JsonIgnore
@OneToMany(mappedBy = "designModel", cascade = CascadeType.ALL, orphanRemoval = true)
private List<DesignModelUndirectedEdge> undirectedEdges;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package com.patternpedia.api.entities.designmodel;

import lombok.Data;

import javax.persistence.Entity;
import javax.persistence.Id;

@Entity
@Data
public class DesignModelEdgeType {

@Id
private String name;

private Boolean swap;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package com.patternpedia.api.entities.designmodel;

import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.MapsId;

import static java.lang.Boolean.TRUE;

@Entity
@Data
@NoArgsConstructor
@EqualsAndHashCode
public class DesignModelPatternEdge {

@EmbeddedId
@EqualsAndHashCode.Exclude
private DesignModelPatternEdgeId edgeId;

@ManyToOne
@EqualsAndHashCode.Include
private DesignModel designModel;

@ManyToOne
@MapsId("patternInstanceId1")
@EqualsAndHashCode.Include
private DesignModelPatternInstance patternInstance1;

@ManyToOne
@MapsId("patternInstanceId2")
@EqualsAndHashCode.Include
private DesignModelPatternInstance patternInstance2;

private Boolean isDirectedEdge;

private String type;

private String description;


public boolean isDirectedEdge() {
return TRUE.equals(isDirectedEdge);
}

public void setPatternInstance1(DesignModelPatternInstance patternInstance) {
if(edgeId == null) {
this.edgeId = new DesignModelPatternEdgeId();
}
this.edgeId.setPatternInstanceId1(patternInstance.getPatternInstanceId());
this.patternInstance1 = patternInstance;
}

public void setPatternInstance2(DesignModelPatternInstance patternInstance) {
if(edgeId == null) {
this.edgeId = new DesignModelPatternEdgeId();
}
this.edgeId.setPatternInstanceId2(patternInstance.getPatternInstanceId());
this.patternInstance2 = patternInstance;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package com.patternpedia.api.entities.designmodel;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import javax.persistence.Embeddable;
import java.io.Serializable;
import java.util.UUID;

@Embeddable
@NoArgsConstructor
@AllArgsConstructor
@Data
@EqualsAndHashCode(callSuper = false)
public class DesignModelPatternEdgeId implements Serializable {

protected UUID patternInstanceId1;

protected UUID patternInstanceId2;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package com.patternpedia.api.entities.designmodel;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import javax.persistence.Embeddable;

@Embeddable
@NoArgsConstructor
@AllArgsConstructor
@Data
@EqualsAndHashCode(callSuper = false)
public class DesignModelPatternGraphData {

private Double x;
private Double y;
private Double vx;
private Double vy;
private String type;
private Integer index;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package com.patternpedia.api.entities.designmodel;

import com.patternpedia.api.entities.Pattern;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.springframework.hateoas.server.core.Relation;

import javax.persistence.*;
import java.util.UUID;

@Entity
@Data
@NoArgsConstructor
@EqualsAndHashCode
@Relation(value = "pattern", collectionRelation = "patterns")
public class DesignModelPatternInstance {

@Id
@GeneratedValue(generator = "pg-uuid")
protected UUID patternInstanceId;

@ManyToOne
@EqualsAndHashCode.Include
private DesignModel designModel;

@ManyToOne
@EqualsAndHashCode.Include
private Pattern pattern;

private DesignModelPatternGraphData graphData;

@Transient
private ConcreteSolution concreteSolution;


public DesignModelPatternInstance(DesignModel designModel, Pattern pattern) {
this.designModel = designModel;
this.pattern = pattern;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package com.patternpedia.api.entities.designmodel;

import com.patternpedia.api.entities.UndirectedEdge;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import javax.persistence.EmbeddedId;
import javax.persistence.Entity;
import javax.persistence.ManyToOne;
import javax.persistence.MapsId;

@Entity
@Data
@NoArgsConstructor
@EqualsAndHashCode
public class DesignModelUndirectedEdge {

@EmbeddedId
@EqualsAndHashCode.Exclude
private DesignModelUndirectedEdgeId id;

@ManyToOne
@MapsId("designModelId")
@EqualsAndHashCode.Include
private DesignModel designModel;

@ManyToOne
@MapsId("undirectedEdgeId")
@EqualsAndHashCode.Include
private UndirectedEdge undirectedEdge;

public DesignModelUndirectedEdge(DesignModel designModel, UndirectedEdge undirectedEdge) {
this.designModel = designModel;
this.undirectedEdge = undirectedEdge;
this.id = new DesignModelUndirectedEdgeId(designModel.getId(), undirectedEdge.getId());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.patternpedia.api.entities.designmodel;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;

import javax.persistence.Embeddable;
import java.io.Serializable;
import java.util.UUID;

@Embeddable
@NoArgsConstructor
@AllArgsConstructor
@Data
@EqualsAndHashCode(callSuper = false)
public class DesignModelUndirectedEdgeId implements Serializable {
protected UUID designModelId;
protected UUID undirectedEdgeId;
}
Loading