Add ObjectType

Add ObjectAttribute
Add rest ObjectTypeResource
Add sample ObjectAttribute String implementation
Add jackson dependency
This commit is contained in:
2024-06-17 23:10:46 +02:00
parent 23709c3497
commit 38c7658854
5 changed files with 145 additions and 0 deletions

View File

@ -15,6 +15,7 @@ dependencies {
implementation 'io.quarkus:quarkus-arc' implementation 'io.quarkus:quarkus-arc'
testImplementation 'io.quarkus:quarkus-junit5' testImplementation 'io.quarkus:quarkus-junit5'
testImplementation 'io.rest-assured:rest-assured' testImplementation 'io.rest-assured:rest-assured'
implementation 'io.quarkus:quarkus-rest-jackson:3.11.2'
compileOnly 'org.projectlombok:lombok:1.18.32' compileOnly 'org.projectlombok:lombok:1.18.32'
annotationProcessor 'org.projectlombok:lombok:1.18.32' annotationProcessor 'org.projectlombok:lombok:1.18.32'
implementation ('com.rethinkdb:rethinkdb-driver:2.4.4') { implementation ('com.rethinkdb:rethinkdb-driver:2.4.4') {

View File

@ -0,0 +1,30 @@
package de.w665.fluidcms.model;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import de.w665.fluidcms.model.objectattributes.StringObjectAttribute;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Setter
@Getter
@AllArgsConstructor
@NoArgsConstructor
@JsonTypeInfo(
use = JsonTypeInfo.Id.NAME,
property = "type")
@JsonSubTypes({
@JsonSubTypes.Type(value = StringObjectAttribute.class, name = "String"),
})
public abstract class ObjectAttribute <T> {
private String name;
private String description;
private boolean required;
private T defaultValue;
public abstract String getValueAsString();
public abstract T getValue();
public abstract void setValue(T value);
}

View File

@ -0,0 +1,19 @@
package de.w665.fluidcms.model;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.util.Map;
@Getter
@Setter
@ToString
public class ObjectType {
private String id;
private String name;
private String description;
private String icon;
private String color;
private Map<String, ObjectAttribute> attributes;
}

View File

@ -0,0 +1,30 @@
package de.w665.fluidcms.model.objectattributes;
import de.w665.fluidcms.model.ObjectAttribute;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class StringObjectAttribute extends ObjectAttribute<String> {
private String value;
@Override
public String getValueAsString() {
return value;
}
@Override
public String getValue() {
return value;
}
@Override
public void setValue(String value) {
this.value = value;
}
}

View File

@ -0,0 +1,65 @@
package de.w665.fluidcms.rest.mapping;
import de.w665.fluidcms.model.ObjectAttribute;
import de.w665.fluidcms.model.ObjectType;
import de.w665.fluidcms.model.objectattributes.StringObjectAttribute;
import jakarta.ws.rs.*;
import lombok.extern.slf4j.Slf4j;
import org.jboss.resteasy.reactive.RestResponse;
import java.util.HashMap;
import java.util.Map;
@Slf4j
@Path("/objectType")
public class ObjectTypeResource {
@POST
@Consumes("application/json")
@Produces("application/json")
public RestResponse<ObjectType> createObjectType(ObjectType objectType) {
log.debug(objectType.toString());
return RestResponse.ok(objectType);
}
@GET
@Produces("application/json")
public RestResponse<ObjectType> getObjectType() {
StringObjectAttribute attr1 = new StringObjectAttribute();
String number = String.valueOf((int) (Math.random() * 100));
attr1.setName("Attribute " + number);
attr1.setDescription("This is attribute " + number);
attr1.setRequired(true);
attr1.setDefaultValue("Default Value " + number);
attr1.setValue("Attribute " + number + " Value");
number = String.valueOf((int) (Math.random() * 100));
StringObjectAttribute attr2 = new StringObjectAttribute();
attr2.setName("Attribute " + number);
attr2.setDescription("This is attribute " + number);
attr2.setRequired(false);
attr2.setDefaultValue("Default Value " + number);
attr2.setValue("Attribute " + number + " Value");
// Add the StringObjectAttribute objects to a Map
Map<String, ObjectAttribute> attributes = new HashMap<>();
attributes.put("attr1", attr1);
attributes.put("attr2", attr2);
// Create an ObjectType object and set the attributes
ObjectType objectType = new ObjectType();
objectType.setId("123");
number = String.valueOf((int) (Math.random() * 100));
objectType.setName("Object Type " + number);
objectType.setDescription("This is object type " + number);
// random number
objectType.setIcon("icon.png");
objectType.setColor("blue");
objectType.setAttributes(attributes);
return RestResponse.ok(objectType);
}
}