diff --git a/pom.xml b/pom.xml
index d00d9c5..6d82ee3 100755
--- a/pom.xml
+++ b/pom.xml
@@ -78,6 +78,11 @@
2.8.0
compile
+
+ org.apache.commons
+ commons-lang3
+ 3.7
+
diff --git a/src/main/java/edu/itu/cavabunga/advice/ExceptionHandlerAdvice.java b/src/main/java/edu/itu/cavabunga/advice/ExceptionHandlerAdvice.java
index 5e952c4..39b0e10 100755
--- a/src/main/java/edu/itu/cavabunga/advice/ExceptionHandlerAdvice.java
+++ b/src/main/java/edu/itu/cavabunga/advice/ExceptionHandlerAdvice.java
@@ -20,6 +20,7 @@ public class ExceptionHandlerAdvice {
@ExceptionHandler(NotFound.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public ErrorResponse handleNotFound(NotFound e){
+ System.out.printf(e.getMessage());
return new ErrorResponse(1,e.getMessage(), null);
}
@@ -32,6 +33,7 @@ public ErrorResponse handleNotFound(NotFound e){
@ExceptionHandler(Conflict.class)
@ResponseStatus(HttpStatus.CONFLICT)
public ErrorResponse handleConflict(Conflict e){
+ System.out.printf(e.getMessage());
return new ErrorResponse(1,e.getMessage(),null);
}
@@ -44,6 +46,7 @@ public ErrorResponse handleConflict(Conflict e){
@ExceptionHandler(IllegalStateException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ErrorResponse handleIllegalState(IllegalStateException e){
+ System.out.printf(e.getMessage());
return new ErrorResponse(1,e.getMessage(),null);
}
@@ -56,6 +59,7 @@ public ErrorResponse handleIllegalState(IllegalStateException e){
@ExceptionHandler(IllegalArgumentException.class)
@ResponseStatus(HttpStatus.BAD_REQUEST)
public ErrorResponse handleIllegalArgument(IllegalArgumentException e){
+ System.out.printf(e.getMessage());
return new ErrorResponse(1,e.getMessage(),null);
}
@@ -65,11 +69,12 @@ public ErrorResponse handleIllegalArgument(IllegalArgumentException e){
* @param e caught exception
* @return ErrorResponse with exception message with related HTTP status
*/
- @ExceptionHandler(Exception.class)
+ /* @ExceptionHandler(Exception.class)
@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
public ErrorResponse handleException(Exception e){
+ System.out.printf(e.getMessage());
return new ErrorResponse(1,e.getMessage(), null);
- }
+ }*/
}
diff --git a/src/main/java/edu/itu/cavabunga/business/CalendarManagerServiceImpl.java b/src/main/java/edu/itu/cavabunga/business/CalendarManagerServiceImpl.java
index b39fd1b..77fcce4 100755
--- a/src/main/java/edu/itu/cavabunga/business/CalendarManagerServiceImpl.java
+++ b/src/main/java/edu/itu/cavabunga/business/CalendarManagerServiceImpl.java
@@ -110,7 +110,7 @@ public void addComponent(Component component, String owner, Long parentComponent
Assert.state(
component.getId() == null,
- "New component cannot have id field, please use update methods"
+ "44New component cannot have id field, please use update methods"
);
if(!participantService.getParticipantByUserName(owner).isPresent()) {
@@ -192,7 +192,7 @@ public void addProperty(Property property, Long parentComponentId){
Assert.notNull(parentComponentId, "ParentComponentId must not be null!");
Assert.state(
property.getId() == null,
- "New Property cannot have id field, please use update methods"
+ "55New Property cannot have id field, please use update methods"
);
if(!icalService.getComponentById(parentComponentId).isPresent()) {
@@ -269,7 +269,7 @@ public void addParameter(Parameter parameter, Long parentPropertyId){
Assert.notNull(parentPropertyId, "ParentPropertyId must not be null!");
Assert.state(
parameter.getId() == null,
- "New parameter cannot have id field, please use update methods"
+ "77New parameter cannot have id field, please use update methods"
);
if(!icalService.getPropertyById(parentPropertyId).isPresent()) {
diff --git a/src/main/java/edu/itu/cavabunga/controller/SeederController.java b/src/main/java/edu/itu/cavabunga/controller/SeederController.java
new file mode 100644
index 0000000..82e2811
--- /dev/null
+++ b/src/main/java/edu/itu/cavabunga/controller/SeederController.java
@@ -0,0 +1,130 @@
+package edu.itu.cavabunga.controller;
+
+import edu.itu.cavabunga.business.CalendarManagerService;
+import edu.itu.cavabunga.core.entity.Component;
+import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.core.entity.Participant;
+import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.core.entity.component.ComponentType;
+import edu.itu.cavabunga.core.entity.parameter.ParameterType;
+import edu.itu.cavabunga.core.entity.participant.ParticipantType;
+import edu.itu.cavabunga.core.entity.property.PropertyType;
+import edu.itu.cavabunga.core.entity.property.PropertyValueType;
+import edu.itu.cavabunga.core.service.IcalService;
+import edu.itu.cavabunga.core.service.ParticipantService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import sun.awt.geom.AreaOp;
+
+@RestController
+@RequestMapping(path="/seeddb")
+public class SeederController {
+ @Autowired
+ private CalendarManagerService calendarManagerService;
+
+ @Autowired
+ private ParticipantService participantService;
+
+ @Autowired
+ private IcalService icalService;
+
+
+
+
+ @GetMapping
+ @Transactional
+ public String seedDataBase(){
+ participantService.saveParticipant(participantService.createParticipant("testuser", ParticipantType.User));
+ participantService.saveParticipant(participantService.createParticipant("testgroup", ParticipantType.Group));
+
+
+ Component calendar = icalService.createComponent(ComponentType.Calendar);
+ Property prodid = icalService.createProperty(PropertyType.Prodid);
+ prodid.setValue("-//Test Inc//Cavabunga Calendar//");
+ Property version = icalService.createProperty(PropertyType.Version);
+ version.setValue("2.0");
+ Property calscale = icalService.createProperty(PropertyType.Calscale);
+ calscale.setValue("GREGORIAN");
+ Property method = icalService.createProperty(PropertyType.Method);
+ method.setValue("PUBLISH");
+ calendar.addProperty(prodid);
+ calendar.addProperty(version);
+ calendar.addProperty(calscale);
+ calendar.addProperty(method);
+
+ calendar.setOwner(calendarManagerService.getParticipantByUserName("testuser"));
+
+
+ Component timezone = icalService.createComponent(ComponentType.Timezone);
+ Property tzid = icalService.createProperty(PropertyType.Tzid);
+ tzid.setValue("Europe/Istanbul");
+ timezone.addProperty(tzid);
+ Component standard = icalService.createComponent(ComponentType.Standard);
+ Property tzoffsetfrom = icalService.createProperty(PropertyType.Tzoffsetfrom);
+ tzoffsetfrom.setValue("+0300");
+ Property tzoffsetto = icalService.createProperty(PropertyType.Tzoffsetto);
+ tzoffsetto.setValue("+0300");
+ Property tzname = icalService.createProperty(PropertyType.Tzname);
+ tzname.setValue("+03");
+ standard.addProperty(tzoffsetfrom);
+ standard.addProperty(tzoffsetto);
+ standard.addProperty(tzname);
+ timezone.addComponent(standard);
+ calendar.addComponent(timezone);
+
+ Component event = icalService.createComponent(ComponentType.Event);
+ Property dtstart = icalService.createProperty(PropertyType.Dtstart);
+ dtstart.setValue("20160423T170000Z");
+ Property dtend = icalService.createProperty(PropertyType.Dtend);
+ dtend.setValue("20160423T180000Z");
+ Property dtstamp = icalService.createProperty(PropertyType.Dtstamp);
+ dtstamp.setValue("20180520T181535Z");
+ Property organizer = icalService.createProperty(PropertyType.Organizer);
+ organizer.setValue("mailto:unknownorganizer@calendar.cavabunga.com");
+ Parameter cn = icalService.createParameter(ParameterType.Cn);
+ cn.setValue("unknownorganizer@calendar.google.com");
+ organizer.addParameter(cn);
+ Property uid = icalService.createProperty(PropertyType.Uid);
+ uid.setValue("7kukuqrfedlm2f9t0vr42q2qc8cm9l3o7vn9g00q3j3s5mhdo2ovuahsd9hf54qk3j60");
+ Property attendee = icalService.createProperty(PropertyType.Attendee);
+ attendee.setValue("mailto:dgkncelik@gmail.com");
+ Parameter cutype = icalService.createParameter(ParameterType.Cutype);
+ cutype.setValue("INDIVIDUAL");
+ Parameter role = icalService.createParameter(ParameterType.Role);
+ role.setValue("REQ-PARTICIPANT");
+ Parameter partstat = icalService.createParameter(ParameterType.Partstat);
+ partstat.setValue("ACCEPTED");
+ attendee.addParameter(cutype);
+ attendee.addParameter(role);
+ attendee.addParameter(partstat);
+ Property classs = icalService.createProperty(PropertyType.Class);
+ classs.setValue("PRIVATE");
+ Property created = icalService.createProperty(PropertyType.Created);
+ created.setValue("20160111T065955Z");
+ Property description = icalService.createProperty(PropertyType.Description);
+ description.setValue("---description_here---");
+ Property lastmod = icalService.createProperty(PropertyType.Lastmod);
+ lastmod.setValue("20160112T053844Z");
+ Property seq = icalService.createProperty(PropertyType.Seq);
+ seq.setValue("0");
+ event.addProperty(dtstart);
+ event.addProperty(dtend);
+ event.addProperty(dtstamp);
+ event.addProperty(organizer);
+ event.addProperty(uid);
+ event.addProperty(attendee);
+ event.addProperty(classs);
+ event.addProperty(created);
+ event.addProperty(description);
+ event.addProperty(lastmod);
+ event.addProperty(seq);
+ calendar.addComponent(event);
+
+ icalService.saveComponent(calendar);
+
+ return "ok";
+ }
+}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/Component.java b/src/main/java/edu/itu/cavabunga/core/entity/Component.java
index 93aa594..277062b 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/Component.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/Component.java
@@ -2,7 +2,10 @@
import com.fasterxml.jackson.annotation.*;
import edu.itu.cavabunga.core.entity.component.*;
+import edu.itu.cavabunga.core.entity.property.PropertyType;
+import edu.itu.cavabunga.exception.Validation;
import lombok.Data;
+import org.apache.commons.lang.Validate;
import org.hibernate.annotations.DiscriminatorOptions;
import org.springframework.data.annotation.CreatedDate;
import org.springframework.data.jpa.domain.support.AuditingEntityListener;
@@ -15,7 +18,6 @@
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING)
-@EntityListeners(AuditingEntityListener.class)
@DiscriminatorOptions(force=true)
@JsonIgnoreProperties(ignoreUnknown = true)
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY)
@@ -69,7 +71,78 @@ public void addProperty(Property property){
properties.add(property);
}
- public boolean validate(){
- return true;
+ public void validate(){
+ if(!components.isEmpty()){
+ for (Component c : components){
+ try {
+ c.validate();
+ }catch (Exception e){
+ throw new Validation(this.getClass().getName() + " component's sub component validation failed: " + e.getMessage());
+ }
+ }
+ }
+
+ if(!properties.isEmpty()){
+ for(Property p : properties){
+ try {
+ p.validate();
+ }catch (Exception e){
+ throw new Validation(this.getClass().getName() + " component property validateion failed " + e.getMessage());
+ }
+ }
+ }
+ }
+
+ public void validateOptionalOneProperties(List propertyTypeList){
+ Integer propertyCount = 0;
+ for(PropertyType pt : propertyTypeList){
+ for(Property p : properties){
+ if(p.getClass().getName().equals(pt.create().getClass().getName())){
+ propertyCount++;
+ }
+
+ if(propertyCount >= 2){
+ throw new Validation("Component validation failed in optional-one properties check: " + p.getClass().getName());
+ }
+ }
+ propertyCount = 0;
+ }
+ }
+
+ public void validateOptionalManyProperties(){
+ //
+ }
+
+ public void validateRequiredOneProperties(List propertyTypeList){
+ Integer propertyCount = 0;
+ for(PropertyType pt : propertyTypeList){
+ for(Property p : properties){
+ if(p.getClass().getName().equals(pt.create().getClass().getName())){
+ propertyCount++;
+ }
+ }
+
+ if(propertyCount != 1){
+ throw new Validation("Component validation failed in required-one properties check. Count " + propertyCount + ": " + pt.create().getClass().getName());
+ }
+
+ propertyCount = 0;
+ }
+ }
+
+ public void validateReqiredManyProperties(List propertyTypeList){
+ Integer propertyCount = 0;
+ for(PropertyType pt : propertyTypeList){
+ for(Property p : properties){
+ if(p.getClass().getName().equals(pt.create().getClass().getName())){
+ propertyCount++;
+ }
+ }
+
+ if(propertyCount == 0){
+ throw new Validation("Component validation failed in required-many properties check: " + pt.create().getClass().getName());
+ }
+
+ }
}
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/Parameter.java b/src/main/java/edu/itu/cavabunga/core/entity/Parameter.java
index 2ca87b0..4ee78d8 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/Parameter.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/Parameter.java
@@ -5,6 +5,7 @@
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import edu.itu.cavabunga.core.entity.parameter.*;
+import edu.itu.cavabunga.exception.Validation;
import lombok.Data;
import org.hibernate.annotations.DiscriminatorOptions;
@@ -48,8 +49,14 @@ public abstract class Parameter {
private String value;
- @ManyToOne(cascade = CascadeType.ALL)
+ @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "property_id")
@JsonBackReference
private Property property;
+
+ public void validate(){
+ if((this.value == null) || (this.value.trim().isEmpty())){
+ throw new Validation(this.getClass().getName() + " parameter cannot be empty");
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/Participant.java b/src/main/java/edu/itu/cavabunga/core/entity/Participant.java
index 881b461..33263d7 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/Participant.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/Participant.java
@@ -1,9 +1,7 @@
+
package edu.itu.cavabunga.core.entity;
-import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import com.fasterxml.jackson.annotation.JsonManagedReference;
-import com.fasterxml.jackson.annotation.JsonSubTypes;
-import com.fasterxml.jackson.annotation.JsonTypeInfo;
+import com.fasterxml.jackson.annotation.*;
import edu.itu.cavabunga.core.entity.participant.Group;
import edu.itu.cavabunga.core.entity.participant.User;
import lombok.Data;
@@ -21,7 +19,7 @@
@DiscriminatorColumn(name = "type", discriminatorType = DiscriminatorType.STRING)
@EntityListeners(AuditingEntityListener.class)
@DiscriminatorOptions(force=true)
-@JsonIgnoreProperties(ignoreUnknown = true)
+@JsonIgnoreProperties(ignoreUnknown = true, value= {"components"}) //TODO: participants with no component will give error while building JSON
@JsonTypeInfo(use = JsonTypeInfo.Id.NAME, include = JsonTypeInfo.As.PROPERTY)
@JsonSubTypes({
@JsonSubTypes.Type(value = User.class, name = "User"),
@@ -40,11 +38,17 @@ public abstract class Participant {
@CreatedDate
private Date creationDate;
- @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy = "owner")
+
+ @OneToMany(fetch = FetchType.LAZY, mappedBy = "owner")
@JsonManagedReference(value = "participantAndComponent")
+ @JsonIgnore
private List components = new ArrayList<>();
public Participant(){
}
-}
+
+ public void validate(){
+
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/Property.java b/src/main/java/edu/itu/cavabunga/core/entity/Property.java
index f8a1c2e..bfe0433 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/Property.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/Property.java
@@ -3,8 +3,10 @@
import com.fasterxml.jackson.annotation.*;
import edu.itu.cavabunga.core.entity.property.*;
import edu.itu.cavabunga.core.entity.property.Class;
+import edu.itu.cavabunga.exception.Validation;
import lombok.Data;
import org.hibernate.annotations.DiscriminatorOptions;
+import org.omg.PortableServer.THREAD_POLICY_ID;
import javax.persistence.*;
import javax.persistence.Version;
@@ -76,12 +78,12 @@ public abstract class Property {
private String value;
- @ManyToOne(cascade = CascadeType.ALL)
+ @ManyToOne(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JoinColumn(name = "component_id")
@JsonBackReference
private Component component;
- @OneToMany(mappedBy = "property", cascade = CascadeType.ALL)
+ @OneToMany(mappedBy = "property", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
@JsonManagedReference
private List parameters = new ArrayList<>();
@@ -89,4 +91,145 @@ public void addParameter(Parameter parameter){
parameter.setProperty(this);
parameters.add(parameter);
}
+
+ public void validate(){
+ if(!this.parameters.isEmpty()){
+ for(Parameter pr : this.parameters){
+ try{
+ pr.validate();
+ }catch (Exception e){
+ throw new Validation(this.getClass().getName() + " property class validation failed: " + e.getMessage());
+ }
+ }
+ }
+ }
+
+ public void validateMustHaveParameters(List parameterList){
+ if(parameterList != null && !parameterList.isEmpty()) {
+ Integer instanceCount = parameterList.size();
+ Integer foundInstance = 0;
+ for (Parameter pr : parameterList) {
+ for (Parameter search : parameters) {
+ if (pr.getClass().getName().equals(search.getClass().getName())) {
+ foundInstance++;
+ }
+ }
+ }
+
+ if (foundInstance != instanceCount) {
+ throw new Validation(this.getClass().getName() + "property musthaveList is not valid");
+ }
+ }
+ }
+
+ public void validateCannotHaveParameters(List parameterList){
+ if(parameterList != null && !parameterList.isEmpty()) {
+ for (Parameter pr : parameterList) {
+ for (Parameter search : parameters) {
+ if (pr.getClass().getName().equals(search.getClass().getName())) {
+ throw new Validation(this.getClass().getName() + " property cannot have child parameter of: " + search.getClass().getName());
+ }
+ }
+ }
+ }
+ }
+
+ public void validateValueType(PropertyValueType propertyValueType){
+ if(propertyValueType != null) {
+ if (propertyValueType == PropertyValueType.BINARY) {
+ if (!value.matches("^([A-Za-z0-9+/]{4})*([A-Za-z0-9+/]{4}|[A-Za-z0-9+/]{3}=|[A-Za-z0-9+/]{2}==)$")) {
+ throw new Validation(this.getClass().getName() + " value is not valid BINARY type");
+ }
+ }
+
+ if (propertyValueType == PropertyValueType.BOOLEAN) {
+ if (value != "TRUE" && value != "FALSE") {
+ throw new Validation(this.getClass().getName() + " value is not valid BOOLEAN type " + value);
+ }
+ }
+
+ if (propertyValueType == PropertyValueType.CALADDRESS) {
+ //TODO: there is a full rfc about it: rfc3986
+ }
+
+ if (propertyValueType == PropertyValueType.DATE) {
+ String[] parts = value.split(",");
+ for (String part : parts) {
+ if (!part.matches("^[0-9]{8}$")) {
+ throw new Validation(this.getClass().getName() + " value is not valid DATE type " + value);
+ }
+ }
+ }
+
+ if (propertyValueType == PropertyValueType.DATETIME) {
+ String[] parts = value.split(",");
+ for (String part : parts) {
+ if (!part.matches("^[0-9]{8}T[0-9]{6}|[0-9]{8}T[0-9]{6}Z")) {
+ throw new Validation(this.getClass().getName() + " value is not valid DATE-TIME type " + value);
+ }
+ }
+ }
+
+ if (propertyValueType == PropertyValueType.DURATION) {
+ //TODO: rfc5545 pg 35
+ }
+
+ if (propertyValueType == PropertyValueType.FLOAT) {
+ String[] parts = value.split(",");
+ for (String part : parts) {
+ try {
+ Float f = Float.parseFloat(value);
+ } catch (NumberFormatException e) {
+ //TODO: GEO property has a value type in 'float;float' format !!
+ throw new Validation(this.getClass().getName() + " value is not valid FLOAT type " + value);
+ }
+ }
+ }
+
+ if (propertyValueType == PropertyValueType.INTEGER) {
+ String[] parts = value.split(",");
+ for (String part : parts) {
+ try {
+ Integer i = Integer.parseInt(value);
+ } catch (NumberFormatException e) {
+ throw new Validation(this.getClass().getName() + " value is not valid INTEGER type" + value);
+ }
+ }
+ }
+
+ if (propertyValueType == PropertyValueType.PERIOD) {
+ //TODO: rfc5545 pg 36
+ }
+
+ if (propertyValueType == PropertyValueType.RECUR) {
+ //TODO: rfc5545 pg 37-45
+ }
+
+ if (propertyValueType == PropertyValueType.TEXT) {
+ //TODO: rfc5545 pg 45
+ }
+
+ if (propertyValueType == PropertyValueType.TIME) {
+ String[] parts = value.split(",");
+ for (String part : parts) {
+ if (!part.matches("^[0-9]{6}$|^[0-9]{6}Z$")) {
+ throw new Validation(this.getClass().getName() + " value is not valid TIME type " + value);
+ }
+ }
+ }
+
+ if (propertyValueType == PropertyValueType.URI) {
+ //TODO: there is a full rfc about it: rfc3986
+ }
+
+ if (propertyValueType == PropertyValueType.UTCOFFSET) {
+ String[] parts = value.split(",");
+ for (String part : parts) {
+ if (!part.matches("^[-+][0-9]{4}$|^[-+][0-9]{4}Z$")) {
+ throw new Validation(this.getClass().getName() + " value is not valid TIME type " + value);
+ }
+ }
+ }
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/component/Alarm.java b/src/main/java/edu/itu/cavabunga/core/entity/component/Alarm.java
index ac6567f..fe02525 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/component/Alarm.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/component/Alarm.java
@@ -1,13 +1,32 @@
package edu.itu.cavabunga.core.entity.component;
import edu.itu.cavabunga.core.entity.Component;
+import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.core.entity.property.PropertyType;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
+import java.util.ArrayList;
+import java.util.List;
@Entity
public class Alarm extends Component{
@Override
- public boolean validate(){
- return true;
+ public void validate(){
+ if(!(this.getParent() instanceof Event) && !(this.getParent() instanceof Todo)){
+ throw new Validation("Alarm component can only be child of Event and Todo, not: " + this.getParent().getClass().getName());
+ }
+
+ super.validate();
+
+ List requireOneList = new ArrayList();
+ requireOneList.add(PropertyType.Action);
+ requireOneList.add(PropertyType.Trigger);
+ super.validateRequiredOneProperties(requireOneList);
+
+ List optionalOneList = new ArrayList();
+ optionalOneList.add(PropertyType.Due);
+ optionalOneList.add(PropertyType.Repeat);
+ super.validateOptionalOneProperties(optionalOneList);
}
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/component/Calendar.java b/src/main/java/edu/itu/cavabunga/core/entity/component/Calendar.java
index 1537a47..17569c8 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/component/Calendar.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/component/Calendar.java
@@ -1,13 +1,36 @@
package edu.itu.cavabunga.core.entity.component;
import edu.itu.cavabunga.core.entity.Component;
+import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.core.entity.property.Prodid;
+import edu.itu.cavabunga.core.entity.property.PropertyType;
+import edu.itu.cavabunga.core.entity.property.Version;
+import edu.itu.cavabunga.exception.Validation;
+import org.apache.commons.lang.Validate;
import javax.persistence.Entity;
+import java.util.ArrayList;
+import java.util.List;
@Entity
public class Calendar extends Component {
@Override
- public boolean validate(){
- return true;
+ public void validate(){
+ if(this.getParent() != null){
+ throw new Validation("Calendar component cannot have parent component");
+ }
+
+ super.validate();
+
+ List optionalOneList = new ArrayList();
+ optionalOneList.add(PropertyType.Calscale);
+ optionalOneList.add(PropertyType.Method);
+ super.validateOptionalOneProperties(optionalOneList);
+
+ List requiredOneList = new ArrayList();
+ requiredOneList.add(PropertyType.Prodid);
+ requiredOneList.add(PropertyType.Version);
+ super.validateRequiredOneProperties(requiredOneList);
}
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/component/Daylight.java b/src/main/java/edu/itu/cavabunga/core/entity/component/Daylight.java
index af8a84a..37234cb 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/component/Daylight.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/component/Daylight.java
@@ -1,13 +1,28 @@
package edu.itu.cavabunga.core.entity.component;
import edu.itu.cavabunga.core.entity.Component;
+import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.core.entity.property.PropertyType;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
+import java.util.ArrayList;
+import java.util.List;
@Entity
public class Daylight extends Component{
@Override
- public boolean validate(){
- return true;
+ public void validate(){
+ if(!(this.getParent() instanceof Timezone)){
+ throw new Validation("Daylight component cannot be child of :" + this.getParent().getClass().getName());
+ }
+
+ super.validate();
+
+ List requireOneList = new ArrayList();
+ requireOneList.add(PropertyType.Dtstart);
+ requireOneList.add(PropertyType.Tzname);
+ requireOneList.add(PropertyType.Tzoffsetfrom);
+ super.validateRequiredOneProperties(requireOneList);
}
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/component/Event.java b/src/main/java/edu/itu/cavabunga/core/entity/component/Event.java
index 95bf85b..efd7d8f 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/component/Event.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/component/Event.java
@@ -1,13 +1,48 @@
package edu.itu.cavabunga.core.entity.component;
import edu.itu.cavabunga.core.entity.Component;
+import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.core.entity.property.Dtstamp;
+import edu.itu.cavabunga.core.entity.property.PropertyType;
+import edu.itu.cavabunga.core.entity.property.Uid;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
+import java.util.ArrayList;
+import java.util.List;
@Entity
public class Event extends Component {
@Override
- public boolean validate(){
- return true;
+ public void validate(){
+ if(!(this.getParent() instanceof Calendar)){
+ throw new Validation("Event component cannot be child of: " + this.getParent().getClass().getName());
+ }
+
+ super.validate();
+
+ List optionalOneList = new ArrayList();
+ optionalOneList.add(PropertyType.Class);
+ optionalOneList.add(PropertyType.Created);
+ optionalOneList.add(PropertyType.Description);
+ optionalOneList.add(PropertyType.Dtstamp);
+ optionalOneList.add(PropertyType.Dtstart);
+ optionalOneList.add(PropertyType.Geo);
+ optionalOneList.add(PropertyType.Lastmod);
+ optionalOneList.add(PropertyType.Location);
+ optionalOneList.add(PropertyType.Organizer);
+ optionalOneList.add(PropertyType.Priority);
+ optionalOneList.add(PropertyType.Recurid);
+ optionalOneList.add(PropertyType.Seq);
+ optionalOneList.add(PropertyType.Status);
+ optionalOneList.add(PropertyType.Summary);
+ optionalOneList.add(PropertyType.Transp);
+ optionalOneList.add(PropertyType.Uid);
+ optionalOneList.add(PropertyType.Url);
+ super.validateOptionalOneProperties(optionalOneList);
+
+ List requiredOneList = new ArrayList();
+ requiredOneList.add(PropertyType.Dtend);
+ super.validateRequiredOneProperties(requiredOneList);
}
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/component/Freebusy.java b/src/main/java/edu/itu/cavabunga/core/entity/component/Freebusy.java
index 27cac16..bb2f80d 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/component/Freebusy.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/component/Freebusy.java
@@ -1,13 +1,33 @@
package edu.itu.cavabunga.core.entity.component;
import edu.itu.cavabunga.core.entity.Component;
+import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.core.entity.property.PropertyType;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
+import java.util.ArrayList;
+import java.util.List;
@Entity
public class Freebusy extends Component {
@Override
- public boolean validate(){
- return true;
+ public void validate(){
+ if(!(this.getParent() instanceof Calendar)){
+ throw new Validation("Freebusy component cannot be child of:" + this.getParent().getClass().getName());
+ }
+
+ super.validate();
+
+ List optionalOneList = new ArrayList();
+ optionalOneList.add(PropertyType.Contact);
+ optionalOneList.add(PropertyType.Dtend);
+ optionalOneList.add(PropertyType.Dtstamp);
+ optionalOneList.add(PropertyType.Dtstart);
+ optionalOneList.add(PropertyType.Duration);
+ optionalOneList.add(PropertyType.Organizer);
+ optionalOneList.add(PropertyType.Uid);
+ optionalOneList.add(PropertyType.Url);
+ super.validateOptionalOneProperties(optionalOneList);
}
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/component/Journal.java b/src/main/java/edu/itu/cavabunga/core/entity/component/Journal.java
index 6673022..13fb024 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/component/Journal.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/component/Journal.java
@@ -1,13 +1,41 @@
package edu.itu.cavabunga.core.entity.component;
import edu.itu.cavabunga.core.entity.Component;
+import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.core.entity.property.Dtstamp;
+import edu.itu.cavabunga.core.entity.property.PropertyType;
+import edu.itu.cavabunga.core.entity.property.PropertyValueType;
+import edu.itu.cavabunga.core.entity.property.Uid;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
+import java.util.ArrayList;
+import java.util.List;
@Entity
public class Journal extends Component {
@Override
- public boolean validate(){
- return true;
+ public void validate(){
+ if(!(this.getParent() instanceof Component)){
+ throw new Validation("Journal component cannot be child of: " + this.getParent().getClass().getName());
+ }
+
+ super.validate();
+
+ List optionalOneList = new ArrayList();
+ optionalOneList.add(PropertyType.Class);
+ optionalOneList.add(PropertyType.Created);
+ optionalOneList.add(PropertyType.Description);
+ optionalOneList.add(PropertyType.Dtstamp);
+ optionalOneList.add(PropertyType.Dtstart);
+ optionalOneList.add(PropertyType.Lastmod);
+ optionalOneList.add(PropertyType.Organizer);
+ optionalOneList.add(PropertyType.Recurid);
+ optionalOneList.add(PropertyType.Seq);
+ optionalOneList.add(PropertyType.Status);
+ optionalOneList.add(PropertyType.Summary);
+ optionalOneList.add(PropertyType.Uid);
+ optionalOneList.add(PropertyType.Url);
+ super.validateOptionalOneProperties(optionalOneList);
}
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/component/Standard.java b/src/main/java/edu/itu/cavabunga/core/entity/component/Standard.java
index bf263ff..f763015 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/component/Standard.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/component/Standard.java
@@ -1,13 +1,27 @@
package edu.itu.cavabunga.core.entity.component;
import edu.itu.cavabunga.core.entity.Component;
+import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.core.entity.property.PropertyType;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
+import java.util.ArrayList;
+import java.util.List;
@Entity
public class Standard extends Component {
@Override
- public boolean validate(){
- return true;
+ public void validate(){
+ if(!(this.getParent() instanceof Timezone)){
+ throw new Validation("Standard component cannot be child of :" + this.getParent().getClass().getName());
+ }
+
+ super.validate();
+
+ List requireOneList = new ArrayList();
+ requireOneList.add(PropertyType.Dtstart);
+ requireOneList.add(PropertyType.Tzname);
+ requireOneList.add(PropertyType.Tzoffsetfrom);
}
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/component/Timezone.java b/src/main/java/edu/itu/cavabunga/core/entity/component/Timezone.java
index 8355274..e1bddf6 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/component/Timezone.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/component/Timezone.java
@@ -1,13 +1,32 @@
package edu.itu.cavabunga.core.entity.component;
import edu.itu.cavabunga.core.entity.Component;
+import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.core.entity.property.PropertyType;
+import edu.itu.cavabunga.core.entity.property.Tzid;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
+import java.util.ArrayList;
+import java.util.List;
@Entity
public class Timezone extends Component {
@Override
- public boolean validate(){
- return true;
+ public void validate(){
+ if(!(this.getParent() instanceof Calendar)){
+ throw new Validation("Timezone component cannot be child of:" + this.getParent().getClass().getName());
+ }
+
+ super.validate();
+
+ List optionalOneList = new ArrayList();
+ optionalOneList.add(PropertyType.Lastmod);
+ optionalOneList.add(PropertyType.Tzurl);
+ super.validateOptionalOneProperties(optionalOneList);
+
+ List requiredOneList = new ArrayList();
+ requiredOneList.add(PropertyType.Tzid);
+ super.validateRequiredOneProperties(requiredOneList);
}
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/component/Todo.java b/src/main/java/edu/itu/cavabunga/core/entity/component/Todo.java
index 8ba6bc0..7657799 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/component/Todo.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/component/Todo.java
@@ -1,13 +1,50 @@
package edu.itu.cavabunga.core.entity.component;
import edu.itu.cavabunga.core.entity.Component;
+import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.core.entity.property.Dtstamp;
+import edu.itu.cavabunga.core.entity.property.PropertyType;
+import edu.itu.cavabunga.core.entity.property.Uid;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
+import java.util.ArrayList;
+import java.util.List;
@Entity
public class Todo extends Component{
@Override
- public boolean validate(){
- return true;
+ public void validate(){
+ if(!(this.getParent() instanceof Calendar)){
+ throw new Validation("Todo component cannot be child of:" + this.getParent().getClass().getName());
+ }
+
+ super.validate();
+
+ List optionalOneList = new ArrayList();
+ optionalOneList.add(PropertyType.Class);
+ optionalOneList.add(PropertyType.Completed);
+ optionalOneList.add(PropertyType.Created);
+ optionalOneList.add(PropertyType.Description);
+ optionalOneList.add(PropertyType.Dtstamp);
+ optionalOneList.add(PropertyType.Dtstart);
+ optionalOneList.add(PropertyType.Geo);
+ optionalOneList.add(PropertyType.Lastmod);
+ optionalOneList.add(PropertyType.Location);
+ optionalOneList.add(PropertyType.Organizer);
+ optionalOneList.add(PropertyType.Percent);
+ optionalOneList.add(PropertyType.Priority);
+ optionalOneList.add(PropertyType.Recurid);
+ optionalOneList.add(PropertyType.Seq);
+ optionalOneList.add(PropertyType.Status);
+ optionalOneList.add(PropertyType.Summary);
+ optionalOneList.add(PropertyType.Uid);
+ optionalOneList.add(PropertyType.Url);
+ super.validateOptionalOneProperties(optionalOneList);
+
+ List requireOneList = new ArrayList();
+ requireOneList.add(PropertyType.Due);
+ requireOneList.add(PropertyType.Duration);
+ super.validateRequiredOneProperties(requireOneList);
}
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Altrep.java b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Altrep.java
index 47a17ae..c9c8a78 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Altrep.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Altrep.java
@@ -1,9 +1,18 @@
package edu.itu.cavabunga.core.entity.parameter;
import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Altrep extends Parameter {
+ @Override
+ public void validate(){
+ super.validate();
+ if(this.getValue().substring(0,1) != "\"" || this.getValue().substring(this.getValue().length() -1) != "\""){
+ throw new Validation("ALTREP parameter must start and end with DQUOTE char.");
+ }
+
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Cn.java b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Cn.java
index 6c4b777..a8c721f 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Cn.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Cn.java
@@ -1,9 +1,15 @@
package edu.itu.cavabunga.core.entity.parameter;
import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Cn extends Parameter {
+ @Override
+ public void validate(){
+ //TODO: This parameter can be specified on properties with a CAL-ADDRESS value type
+ super.validate();
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Cutype.java b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Cutype.java
index c3c10d6..49388d9 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Cutype.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Cutype.java
@@ -1,9 +1,22 @@
package edu.itu.cavabunga.core.entity.parameter;
import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Cutype extends Parameter {
+ @Override
+ public void validate(){
+ //TODO: This parameter can be specified on properties with a CAL-ADDRESS value type
+ super.validate();
+ if(this.getValue() != "INDIVIDUAL" &&
+ this.getValue() != "GROUP" &&
+ this.getValue() != "RESOURCE" &&
+ this.getValue() != "ROOM" &&
+ this.getValue() != "UNKNOWN"){
+ throw new Validation("CUTYPE value is different from acceptable value range: " + this.getValue());
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/parameter/DelegatedFrom.java b/src/main/java/edu/itu/cavabunga/core/entity/parameter/DelegatedFrom.java
index eb0384f..9add9b2 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/parameter/DelegatedFrom.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/parameter/DelegatedFrom.java
@@ -1,9 +1,19 @@
package edu.itu.cavabunga.core.entity.parameter;
import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class DelegatedFrom extends Parameter {
+ @Override
+ public void validate(){
+ //TODO: This parameter can be specified on properties with a CAL-ADDRESS value type
+ super.validate();
+ if(this.getValue().substring(0,1) != "\"" || this.getValue().substring(this.getValue().length() -1) != "\""){
+ throw new Validation("DELEGATED-FROM parameter must start and end with DQUOTE char.");
+ }
+
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/parameter/DelegatedTo.java b/src/main/java/edu/itu/cavabunga/core/entity/parameter/DelegatedTo.java
index 0de3ea1..bf8fb82 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/parameter/DelegatedTo.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/parameter/DelegatedTo.java
@@ -1,9 +1,19 @@
package edu.itu.cavabunga.core.entity.parameter;
import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class DelegatedTo extends Parameter {
+ @Override
+ public void validate(){
+ //TODO: This parameter can be specified on properties with a CAL-ADDRESS value type
+ super.validate();
+ if(this.getValue().substring(0,1) != "\"" || this.getValue().substring(this.getValue().length() -1) != "\""){
+ throw new Validation("DELEGATED-TO parameter must start and end with DQUOTE char.");
+ }
+
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Dir.java b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Dir.java
index 5777565..11d26ca 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Dir.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Dir.java
@@ -1,9 +1,18 @@
package edu.itu.cavabunga.core.entity.parameter;
import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Dir extends Parameter {
+ @Override
+ public void validate(){
+ //TODO: This parameter can be specified on properties with a CAL-ADDRESS value type
+ super.validate();
+ if(this.getValue().substring(0,1) != "\"" || this.getValue().substring(this.getValue().length() -1) != "\""){
+ throw new Validation("DIR parameter must start and end with DQUOTE char.");
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Encoding.java b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Encoding.java
index 548738e..2e5749a 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Encoding.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Encoding.java
@@ -1,9 +1,24 @@
package edu.itu.cavabunga.core.entity.parameter;
import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Encoding extends Parameter {
+ @Override
+ public void validate(){
+ super.validate();
+
+ if(this.getValue() != "BASE64" && this.getValue() != "8BIT"){
+ throw new Validation("ENCODING value is different from acceptable value range: " + this.getValue());
+ }
+
+ for(Parameter pr : this.getProperty().getParameters()){
+ if( (pr instanceof Value) && pr.getValue() == "BINARY" && this.getValue() != "BASE64"){
+ throw new Validation("While VALUE parameter described as BINARY, ENCODING parameter MUST set as BASE64");
+ }
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Fbtype.java b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Fbtype.java
index c50f182..9822775 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Fbtype.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Fbtype.java
@@ -1,9 +1,20 @@
package edu.itu.cavabunga.core.entity.parameter;
import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Fbtype extends Parameter {
+ @Override
+ public void validate(){
+ super.validate();
+ if(this.getValue() != "FREE" &&
+ this.getValue() != "BUSY" &&
+ this.getValue() != "BUSY-UNAVAILABLE" &&
+ this.getValue() != "BUSY-TENTATIVE"){
+ throw new Validation("FBTYPE value is different from acceptable value range: " + this.getValue());
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Fmttype.java b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Fmttype.java
index 1a1729f..5cdc6fa 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Fmttype.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Fmttype.java
@@ -1,9 +1,18 @@
package edu.itu.cavabunga.core.entity.parameter;
import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Fmttype extends Parameter {
+ @Override
+ public void validate(){
+ //TODO: This parameter can be specified on properties that are used to reference an object
+ super.validate();
+ if(this.getValue().matches("(\\w+)/(\\w+)") != true){
+ throw new Validation("FMTYPE must have valid mime type: " + this.getValue());
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Language.java b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Language.java
index 56d2226..f30a603 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Language.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Language.java
@@ -1,9 +1,20 @@
package edu.itu.cavabunga.core.entity.parameter;
import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.exception.Validation;
+import org.apache.commons.lang.LocaleUtils;
import javax.persistence.Entity;
@Entity
public class Language extends Parameter {
+ @Override
+ public void validate(){
+ super.validate();
+ try {
+ LocaleUtils.toLocale(this.getValue());
+ }catch (IllegalArgumentException e){
+ throw new Validation("Language parameter failed: " + e.getMessage());
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Member.java b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Member.java
index 505181a..3836b74 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Member.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Member.java
@@ -1,9 +1,18 @@
package edu.itu.cavabunga.core.entity.parameter;
import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Member extends Parameter{
+ @Override
+ public void validate(){
+ //TODO: This parameter can be specified on properties with a CAL-ADDRESS value type
+ super.validate();
+ if(this.getValue().substring(0,1) != "\"" || this.getValue().substring(this.getValue().length() -1) != "\""){
+ throw new Validation("MEMBER parameter must start and end with DQUOTE char.");
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Partstat.java b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Partstat.java
index 450ce0f..8cdcea9 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Partstat.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Partstat.java
@@ -1,9 +1,48 @@
package edu.itu.cavabunga.core.entity.parameter;
import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.core.entity.component.Event;
+import edu.itu.cavabunga.core.entity.component.Journal;
+import edu.itu.cavabunga.core.entity.component.Todo;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Partstat extends Parameter {
+ @Override
+ public void validate(){
+ //TODO: This parameter can be specified on properties with a CAL-ADDRESS value type
+ super.validate();
+
+ if(this.getProperty().getComponent() instanceof Event){
+ if(this.getValue() != "NEEDS-ACTION" &&
+ this.getValue() != "ACCEPTED" &&
+ this.getValue() != "DECLINED" &&
+ this.getValue() != "TENTATIVE" &&
+ this.getValue() != "DELEGATED"){
+ throw new Validation("PARTSTAT value is different from acceptable value range in an Event component: " + this.getValue());
+ }
+ }
+
+ if(this.getProperty().getComponent() instanceof Todo){
+ if(this.getValue() != "NEEDS-ACTION" &&
+ this.getValue() != "ACCEPTED" &&
+ this.getValue() != "DECLINED" &&
+ this.getValue() != "TENTATIVE" &&
+ this.getValue() != "DELEGATED" &&
+ this.getValue() != "COMPLETED" &&
+ this.getValue() != "IN-PROCESS"){
+ throw new Validation("PARTSTAT value is different from acceptable value range in a Todo component: " + this.getValue());
+ }
+ }
+
+ if(this.getProperty().getComponent() instanceof Journal){
+ if(this.getValue() != "NEEDS-ACTION" &&
+ this.getValue() != "ACCEPTED" &&
+ this.getValue() != "DECLINED"){
+ throw new Validation("PARTSTAT value is different from acceptable value range in a Journal component " + this.getValue());
+ }
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Range.java b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Range.java
index 19db0e3..9beaef9 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Range.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Range.java
@@ -1,9 +1,20 @@
package edu.itu.cavabunga.core.entity.parameter;
import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.exception.Validation;
+import org.omg.PortableServer.THREAD_POLICY_ID;
import javax.persistence.Entity;
@Entity
public class Range extends Parameter {
+ @Override
+ public void validate(){
+ //TODO: This parameter can be specified on a property that specifies a recurrence identifier.
+ super.validate();
+
+ if(this.getValue() != "THISANDFUTURE"){
+ throw new Validation("RANGE parameter can only have THISANDFUTURE value: " + this.getValue());
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Related.java b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Related.java
index 15a58e6..b5c68e4 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Related.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Related.java
@@ -1,9 +1,18 @@
package edu.itu.cavabunga.core.entity.parameter;
import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Related extends Parameter {
+ @Override
+ public void validate(){
+ //TODO: This parameter can be specified on properties that specify an alarm trigger with a "DURATION" value type.
+ super.validate();
+ if(this.getValue() != "START" && this.getValue() != "END"){
+ throw new Validation("RELATED value is different from acceptable value range: " + this.getValue());
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Reltype.java b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Reltype.java
index 6472bb8..643fc47 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Reltype.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Reltype.java
@@ -1,9 +1,20 @@
package edu.itu.cavabunga.core.entity.parameter;
import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Reltype extends Parameter{
+ @Override
+ public void validate(){
+ //TODO: This parameter can be specified on properties with a CAL-ADDRESS value type
+ super.validate();
+ if(this.getValue() != "PARENT" &&
+ this.getValue() != "CHILD" &&
+ this.getValue() != "SIBLING"){
+ throw new Validation("RELTYPE value is different from acceptable value range: " + this.getValue());
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Role.java b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Role.java
index 1ce3f71..ecd732e 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Role.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Role.java
@@ -1,9 +1,21 @@
package edu.itu.cavabunga.core.entity.parameter;
import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Role extends Parameter {
+ @Override
+ public void validate(){
+ //TODO: This parameter can be specified on properties with a CAL-ADDRESS value type.
+ super.validate();
+ if(this.getValue() != "CHAIR" &&
+ this.getValue() != "REQ-PARTICIPANT" &&
+ this.getValue() != "OPT-PARTICIPANT" &&
+ this.getValue() != "NON-PARTICIPANT"){
+ throw new Validation("ROLE value is different from acceptable value range: " + this.getValue());
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Rsvp.java b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Rsvp.java
index 266f4cd..e91d621 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Rsvp.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Rsvp.java
@@ -1,9 +1,19 @@
package edu.itu.cavabunga.core.entity.parameter;
import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Rsvp extends Parameter {
+ @Override
+ public void validate(){
+ //TODO: This parameter can be specified on properties with a CAL-ADDRESS value type.
+ super.validate();
+ if(this.getValue() != "TRUE" &&
+ this.getValue() != "FALSE"){
+ throw new Validation("RSVP value is different from acceptable value range: " + this.getValue());
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/parameter/SentBy.java b/src/main/java/edu/itu/cavabunga/core/entity/parameter/SentBy.java
index e16ac9a..6072557 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/parameter/SentBy.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/parameter/SentBy.java
@@ -1,9 +1,19 @@
package edu.itu.cavabunga.core.entity.parameter;
import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class SentBy extends Parameter {
+ @Override
+ public void validate(){
+ //TODO:This parameter can be specified on properties with a CAL-ADDRESS value type
+ super.validate();
+ if(this.getValue().substring(0,1) != "\"" || this.getValue().substring(this.getValue().length() -1) != "\""){
+ throw new Validation("SENT-BY parameter must start and end with DQUOTE char.");
+ }
+
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Tzid.java b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Tzid.java
index ec89665..8656394 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Tzid.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Tzid.java
@@ -1,9 +1,27 @@
package edu.itu.cavabunga.core.entity.parameter;
import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.core.entity.component.Calendar;
+import edu.itu.cavabunga.core.entity.property.*;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Tzid extends Parameter {
+ @Override
+ public void validate(){
+ super.validate();
+ if(!(this.getProperty() instanceof Dtstart) &&
+ !(this.getProperty() instanceof Dtend) &&
+ !(this.getProperty() instanceof Due) &&
+ !(this.getProperty() instanceof Exdate) &&
+ !(this.getProperty() instanceof Rdate)){
+ throw new Validation("TZID parameter can only be use in Dtstart, Dtend, Due, Exdate and Rdate properties: " + this.getProperty().getClass().getName());
+ }
+
+ //TODO: Validate TZID string matches with the Calendar's VTIMEZONE component's TZID identifier
+
+
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Value.java b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Value.java
index c7cb575..1189889 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/parameter/Value.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/parameter/Value.java
@@ -1,9 +1,30 @@
package edu.itu.cavabunga.core.entity.parameter;
import edu.itu.cavabunga.core.entity.Parameter;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Value extends Parameter{
+ @Override
+ public void validate(){
+ super.validate();
+ if(this.getValue() != "BINARY" &&
+ this.getValue() != "BOOLEAN" &&
+ this.getValue() != "CAL-ADDRESS" &&
+ this.getValue() != "DATE-TIME" &&
+ this.getValue() != "DATE" &&
+ this.getValue() != "DURATION" &&
+ this.getValue() != "FLOAT" &&
+ this.getValue() != "INTEGER" &&
+ this.getValue() != "PERIOD" &&
+ this.getValue() != "RECUR" &&
+ this.getValue() != "TEXT" &&
+ this.getValue() != "TIME" &&
+ this.getValue() != "URI" &&
+ this.getValue() != "UTC-OFFSET"){
+ throw new Validation("VALUE value is different from acceptable value range: " + this.getValue());
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Acknowledged.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Acknowledged.java
index da04bef..f5cd738 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Acknowledged.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Acknowledged.java
@@ -1,9 +1,28 @@
package edu.itu.cavabunga.core.entity.property;
+import edu.itu.cavabunga.core.entity.Parameter;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.core.entity.component.Alarm;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Acknowledged extends Property {
+ @Override
+ public void validate(){
+ if(this.getValue().trim() != ""){
+ throw new Validation("ACKNOWLEDGED property cannot be empty");
+ }
+
+ if(!this.getParameters().isEmpty()){
+ for(Parameter pr : this.getParameters()){
+ try {
+ pr.validate();
+ }catch (Exception e){
+ throw new Validation("ACKNOWLEDGED parameter validation failed: " + pr.getValue());
+ }
+ }
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Action.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Action.java
index fdff513..1366874 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Action.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Action.java
@@ -1,9 +1,23 @@
package edu.itu.cavabunga.core.entity.property;
+import edu.itu.cavabunga.core.entity.Parameter;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.core.entity.component.Alarm;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Action extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.TEXT);
+
+ if(this.getValue() != "AUDIO" &&
+ this.getValue() != "DISPLAY" &&
+ this.getValue() != "EMAIL"){
+ throw new Validation("ACTION value is different from acceptable value range: " + this.getValue());
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Attach.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Attach.java
index fc2f25b..66dcbc2 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Attach.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Attach.java
@@ -1,9 +1,21 @@
package edu.itu.cavabunga.core.entity.property;
+import edu.itu.cavabunga.core.entity.Parameter;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.core.entity.component.Alarm;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Attach extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ try {
+ super.validateValueType(PropertyValueType.URI);
+ }catch (Exception e){
+ super.validateValueType(PropertyValueType.BINARY);
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Attendee.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Attendee.java
index 8973f92..f66ca3b 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Attendee.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Attendee.java
@@ -1,9 +1,19 @@
package edu.itu.cavabunga.core.entity.property;
+import edu.itu.cavabunga.core.entity.Parameter;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.core.entity.component.Alarm;
+import edu.itu.cavabunga.core.entity.component.Freebusy;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Attendee extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.CALADDRESS);
+ }
+
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Calscale.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Calscale.java
index 2f8fed1..4dd85e3 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Calscale.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Calscale.java
@@ -1,9 +1,24 @@
package edu.itu.cavabunga.core.entity.property;
+import edu.itu.cavabunga.core.entity.Parameter;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.core.entity.component.Alarm;
+import edu.itu.cavabunga.core.entity.component.Calendar;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
+import java.util.List;
@Entity
public class Calscale extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.TEXT);
+
+ //TODO: is cavabunga support only for Gregorian calendar?
+ if(this.getValue() != "GREGORIAN" ){
+ throw new Validation("CALSCALE value is different from acceptable value range: " + this.getValue());
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Catagories.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Catagories.java
index 643c509..580ca61 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Catagories.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Catagories.java
@@ -1,9 +1,17 @@
package edu.itu.cavabunga.core.entity.property;
+import edu.itu.cavabunga.core.entity.Parameter;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.core.entity.component.Alarm;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Catagories extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.TEXT);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Class.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Class.java
index a34ba5f..1fccfea 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Class.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Class.java
@@ -1,9 +1,23 @@
package edu.itu.cavabunga.core.entity.property;
+import edu.itu.cavabunga.core.entity.Parameter;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.core.entity.component.Alarm;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Class extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.TEXT);
+
+ if(this.getValue() != "PUBLIC" &&
+ this.getValue() != "PRIVATE" &&
+ this.getValue() != "CONFIDENTIAL"){
+ throw new Validation("CLASS value is different from acceptable value range: " + this.getValue());
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Comment.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Comment.java
index 71166ee..7936c28 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Comment.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Comment.java
@@ -1,9 +1,16 @@
package edu.itu.cavabunga.core.entity.property;
+import edu.itu.cavabunga.core.entity.Parameter;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Comment extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.TEXT);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Completed.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Completed.java
index 74a6b74..8d9d595 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Completed.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Completed.java
@@ -1,9 +1,18 @@
package edu.itu.cavabunga.core.entity.property;
+import edu.itu.cavabunga.core.entity.Parameter;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.core.entity.component.Alarm;
+import edu.itu.cavabunga.core.entity.component.Todo;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Completed extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.DATETIME);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Contact.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Contact.java
index f212db7..62fdd41 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Contact.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Contact.java
@@ -1,9 +1,17 @@
package edu.itu.cavabunga.core.entity.property;
+import edu.itu.cavabunga.core.entity.Parameter;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.core.entity.component.Todo;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Contact extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.TEXT);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Country.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Country.java
index 0c607b7..22a1b5d 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Country.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Country.java
@@ -6,4 +6,9 @@
@Entity
public class Country extends Property {
+ //TODO: check rfc5545 to confirm if it exists
+ @Override
+ public void validate(){
+
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Created.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Created.java
index c6647d3..354fe7e 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Created.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Created.java
@@ -1,9 +1,16 @@
package edu.itu.cavabunga.core.entity.property;
+import edu.itu.cavabunga.core.entity.Parameter;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Created extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.DATETIME);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Description.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Description.java
index b340dda..e77a301 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Description.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Description.java
@@ -1,9 +1,21 @@
package edu.itu.cavabunga.core.entity.property;
+import edu.itu.cavabunga.core.entity.Parameter;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.core.entity.component.Alarm;
+import edu.itu.cavabunga.core.entity.component.Event;
+import edu.itu.cavabunga.core.entity.component.Journal;
+import edu.itu.cavabunga.core.entity.component.Todo;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
+import java.util.concurrent.ExecutionException;
@Entity
public class Description extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.TEXT);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Dtend.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Dtend.java
index 3c67170..3aa16b1 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Dtend.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Dtend.java
@@ -1,9 +1,20 @@
package edu.itu.cavabunga.core.entity.property;
+import edu.itu.cavabunga.core.entity.Parameter;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Dtend extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ try {
+ super.validateValueType(PropertyValueType.DATETIME);
+ }catch (Validation e){
+ super.validateValueType(PropertyValueType.DATE);
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Dtstamp.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Dtstamp.java
index 49f71d6..6744764 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Dtstamp.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Dtstamp.java
@@ -1,9 +1,16 @@
package edu.itu.cavabunga.core.entity.property;
+import edu.itu.cavabunga.core.entity.Parameter;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Dtstamp extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.DATETIME);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Dtstart.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Dtstart.java
index 706b364..e7a029b 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Dtstart.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Dtstart.java
@@ -1,9 +1,19 @@
package edu.itu.cavabunga.core.entity.property;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Dtstart extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ try {
+ super.validateValueType(PropertyValueType.DATETIME);
+ }catch (Validation e){
+ super.validateValueType(PropertyValueType.DATE);
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Due.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Due.java
index cfef479..e5c538b 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Due.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Due.java
@@ -1,9 +1,19 @@
package edu.itu.cavabunga.core.entity.property;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Due extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ try {
+ super.validateValueType(PropertyValueType.DATETIME);
+ }catch (Validation e){
+ super.validateValueType(PropertyValueType.DATE);
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Duration.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Duration.java
index 8711204..380b59d 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Duration.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Duration.java
@@ -6,4 +6,9 @@
@Entity
public class Duration extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.DURATION);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Exdate.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Exdate.java
index 786d7f9..bf853c3 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Exdate.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Exdate.java
@@ -1,9 +1,19 @@
package edu.itu.cavabunga.core.entity.property;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Exdate extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ try {
+ super.validateValueType(PropertyValueType.DATETIME);
+ }catch (Validation e){
+ super.validateValueType(PropertyValueType.DATE);
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Freebusy.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Freebusy.java
index 97b291e..2918ee0 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Freebusy.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Freebusy.java
@@ -6,4 +6,9 @@
@Entity
public class Freebusy extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.PERIOD);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Geo.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Geo.java
index 6d630b3..2db6eb2 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Geo.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Geo.java
@@ -6,4 +6,9 @@
@Entity
public class Geo extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.FLOAT);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Lastmod.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Lastmod.java
index a348b9d..2b06b81 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Lastmod.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Lastmod.java
@@ -6,4 +6,10 @@
@Entity
public class Lastmod extends Property {
+ //TODO: LAST-MODIFIED Class name change
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.DATETIME);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Location.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Location.java
index 3859b78..027a4b9 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Location.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Location.java
@@ -6,4 +6,9 @@
@Entity
public class Location extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.TEXT);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Method.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Method.java
index 279dc44..b19157d 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Method.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Method.java
@@ -6,4 +6,9 @@
@Entity
public class Method extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.TEXT);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Organizer.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Organizer.java
index 900e28e..c895936 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Organizer.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Organizer.java
@@ -6,4 +6,9 @@
@Entity
public class Organizer extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.CALADDRESS);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Percent.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Percent.java
index f8885a2..1a4f3cf 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Percent.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Percent.java
@@ -1,9 +1,19 @@
package edu.itu.cavabunga.core.entity.property;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Percent extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.INTEGER);
+
+ if(Integer.parseInt(this.getValue()) > 0 | Integer.parseInt(this.getValue()) < 0){
+ throw new Validation("PERCENT property must be in range of 0 to 100: " + this.getValue());
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Priority.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Priority.java
index 00f1f53..ccebce9 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Priority.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Priority.java
@@ -6,4 +6,9 @@
@Entity
public class Priority extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.INTEGER);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Prodid.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Prodid.java
index def8f22..4d3dab5 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Prodid.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Prodid.java
@@ -6,4 +6,9 @@
@Entity
public class Prodid extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.TEXT);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/PropertyValueType.java b/src/main/java/edu/itu/cavabunga/core/entity/property/PropertyValueType.java
new file mode 100644
index 0000000..90ea626
--- /dev/null
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/PropertyValueType.java
@@ -0,0 +1,29 @@
+package edu.itu.cavabunga.core.entity.property;
+
+public enum PropertyValueType {
+ BINARY("BINARY"),
+ BOOLEAN("BOOLEAN"),
+ CALADDRESS("CAL-ADDRESS"),
+ DATE("DATE"),
+ DATETIME("DATE-TIME"),
+ DURATION("DURATION"),
+ FLOAT("FLOAT"),
+ INTEGER("INTEGER"),
+ PERIOD("PERIOD"),
+ RECUR("RECUR"),
+ TEXT("TEXT"),
+ TIME("TIME"),
+ URI("URI"),
+ UTCOFFSET("UTC-OFFSET");
+
+ private final String value;
+
+ PropertyValueType(final String text){
+ this.value = text;
+ }
+
+ @Override
+ public String toString(){
+ return value;
+ }
+}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Rdate.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Rdate.java
index 55159d7..c1dcb08 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Rdate.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Rdate.java
@@ -1,9 +1,19 @@
package edu.itu.cavabunga.core.entity.property;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Rdate extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ try {
+ super.validateValueType(PropertyValueType.DATETIME);
+ }catch (Validation e){
+ super.validateValueType(PropertyValueType.DATE);
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Recurid.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Recurid.java
index df26bd2..cc3085f 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Recurid.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Recurid.java
@@ -1,9 +1,19 @@
package edu.itu.cavabunga.core.entity.property;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Recurid extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ try {
+ super.validateValueType(PropertyValueType.DATETIME);
+ }catch (Validation e){
+ super.validateValueType(PropertyValueType.DATE);
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Related.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Related.java
index af1d607..49eeb3e 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Related.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Related.java
@@ -5,5 +5,7 @@
import javax.persistence.Entity;
@Entity
+//TODO: could be RELATED-TO ?? Class name change
public class Related extends Property {
+ //TODO: implement Related-To
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Repeat.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Repeat.java
index a6bf322..e7ab1aa 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Repeat.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Repeat.java
@@ -1,9 +1,15 @@
package edu.itu.cavabunga.core.entity.property;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Repeat extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.INTEGER);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Resources.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Resources.java
index 1e9dbc2..e0156ea 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Resources.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Resources.java
@@ -6,4 +6,9 @@
@Entity
public class Resources extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.TEXT);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Rrule.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Rrule.java
index da5704d..4cd0e7e 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Rrule.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Rrule.java
@@ -1,9 +1,15 @@
package edu.itu.cavabunga.core.entity.property;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Rrule extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.RECUR);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Seq.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Seq.java
index 220169f..5542f3d 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Seq.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Seq.java
@@ -6,4 +6,10 @@
@Entity
public class Seq extends Property {
+//TODO: implement SEQUENCE
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.INTEGER);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Status.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Status.java
index 5cac2d9..d190fd8 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Status.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Status.java
@@ -1,9 +1,27 @@
package edu.itu.cavabunga.core.entity.property;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Status extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.TEXT);
+
+ if(!this.getValue().equals("TENTATIVE") &&
+ !this.getValue().equals("CONFIRMED") &&
+ !this.getValue().equals("CANCELLED") &&
+ !this.getValue().equals("NEEDS-ACTION") &&
+ !this.getValue().equals("COMPLETED") &&
+ !this.getValue().equals("IN-PROCESS") &&
+ !this.getValue().equals("COMPLETED") &&
+ !this.getValue().equals("DRAFT") &&
+ !this.getValue().equals("FINAL")){
+ throw new Validation("STATUS property is out of acceptable range: " + this.getValue());
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Summary.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Summary.java
index 44401ae..a404a02 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Summary.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Summary.java
@@ -6,4 +6,9 @@
@Entity
public class Summary extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.TEXT);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Transp.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Transp.java
index bf1d3e1..2d52bd4 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Transp.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Transp.java
@@ -1,9 +1,20 @@
package edu.itu.cavabunga.core.entity.property;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Transp extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.TEXT);
+
+ if(!this.getValue().equals("OPAQUE") &&
+ !this.getValue().equals("TRANSPARENT")){
+ throw new Validation("TRANSP property value is out of acceptable range: " + this.getValue());
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Trigger.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Trigger.java
index 1f26de3..b114a60 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Trigger.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Trigger.java
@@ -1,9 +1,19 @@
package edu.itu.cavabunga.core.entity.property;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Trigger extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ try {
+ super.validateValueType(PropertyValueType.DURATION);
+ }catch (Validation e){
+ super.validateValueType(PropertyValueType.DATETIME);
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Tzid.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Tzid.java
index de4c277..119f6dc 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Tzid.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Tzid.java
@@ -6,4 +6,9 @@
@Entity
public class Tzid extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.TEXT);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Tzname.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Tzname.java
index c31e020..29481d5 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Tzname.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Tzname.java
@@ -6,4 +6,9 @@
@Entity
public class Tzname extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.TEXT);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Tzoffsetfrom.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Tzoffsetfrom.java
index 74e5408..bbfe399 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Tzoffsetfrom.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Tzoffsetfrom.java
@@ -6,4 +6,9 @@
@Entity
public class Tzoffsetfrom extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.UTCOFFSET);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Tzoffsetto.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Tzoffsetto.java
index f735fa8..3a2322e 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Tzoffsetto.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Tzoffsetto.java
@@ -6,4 +6,9 @@
@Entity
public class Tzoffsetto extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.UTCOFFSET);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Tzurl.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Tzurl.java
index a16e2f2..30aaa51 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Tzurl.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Tzurl.java
@@ -6,4 +6,9 @@
@Entity
public class Tzurl extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.URI);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Uid.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Uid.java
index 810acba..c6cb8b6 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Uid.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Uid.java
@@ -6,4 +6,9 @@
@Entity
public class Uid extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.TEXT);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Url.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Url.java
index 28af40e..bb439e5 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Url.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Url.java
@@ -6,4 +6,9 @@
@Entity
public class Url extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.URI);
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/entity/property/Version.java b/src/main/java/edu/itu/cavabunga/core/entity/property/Version.java
index a5defce..fda7138 100755
--- a/src/main/java/edu/itu/cavabunga/core/entity/property/Version.java
+++ b/src/main/java/edu/itu/cavabunga/core/entity/property/Version.java
@@ -1,9 +1,20 @@
package edu.itu.cavabunga.core.entity.property;
import edu.itu.cavabunga.core.entity.Property;
+import edu.itu.cavabunga.exception.Validation;
import javax.persistence.Entity;
@Entity
public class Version extends Property {
+ @Override
+ public void validate(){
+ super.validate();
+ super.validateValueType(PropertyValueType.TEXT);
+
+ //cavabunga will not support ical version other then 2.0
+ if(!this.getValue().equals("2.0")){
+ throw new Validation("Version cannot be other then 2.0");
+ }
+ }
}
diff --git a/src/main/java/edu/itu/cavabunga/core/service/IcalService.java b/src/main/java/edu/itu/cavabunga/core/service/IcalService.java
index 6e21428..8d86154 100755
--- a/src/main/java/edu/itu/cavabunga/core/service/IcalService.java
+++ b/src/main/java/edu/itu/cavabunga/core/service/IcalService.java
@@ -100,4 +100,4 @@ public interface IcalService {
* @param id parameter id to delete
*/
void deleteParameterById(Long id);
-}
+}
\ No newline at end of file
diff --git a/src/main/java/edu/itu/cavabunga/core/service/IcalServiceImpl.java b/src/main/java/edu/itu/cavabunga/core/service/IcalServiceImpl.java
index a8baab0..ede1ad9 100755
--- a/src/main/java/edu/itu/cavabunga/core/service/IcalServiceImpl.java
+++ b/src/main/java/edu/itu/cavabunga/core/service/IcalServiceImpl.java
@@ -46,12 +46,12 @@ public class IcalServiceImpl implements IcalService {
*/
@Autowired
public IcalServiceImpl(
- ComponentFactory componentFactory,
- ComponentRepository componentRepository,
- PropertyFactory propertyFactory,
- PropertyRepository propertyRepository,
- ParameterFactory parameterFactory,
- ParameterRepository parameterRepository
+ ComponentFactory componentFactory,
+ ComponentRepository componentRepository,
+ PropertyFactory propertyFactory,
+ PropertyRepository propertyRepository,
+ ParameterFactory parameterFactory,
+ ParameterRepository parameterRepository
) {
this.componentFactory = componentFactory;
this.componentRepository = componentRepository;
@@ -174,4 +174,4 @@ public void saveParameter(Parameter parameter){
public void deleteParameterById(Long id){
parameterRepository.delete(id);
}
-}
+}
\ No newline at end of file
diff --git a/src/main/java/edu/itu/cavabunga/core/service/ParticipantServiceImpl.java b/src/main/java/edu/itu/cavabunga/core/service/ParticipantServiceImpl.java
index f4d44e5..5514815 100755
--- a/src/main/java/edu/itu/cavabunga/core/service/ParticipantServiceImpl.java
+++ b/src/main/java/edu/itu/cavabunga/core/service/ParticipantServiceImpl.java
@@ -6,6 +6,7 @@
import edu.itu.cavabunga.core.repository.ParticipantRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import java.util.List;
import java.util.Optional;
@@ -42,7 +43,7 @@ public ParticipantServiceImpl(
public Participant createParticipant(String userName, ParticipantType participantType){
Participant newParticipant = participantFactory.createParticipant(participantType);
newParticipant.setUserName(userName);
- participantRepository.save(newParticipant);
+ //participantRepository.save(newParticipant); //TODO: no need to create just create, while you saving: it will give error "New participant cannot have id field"
return newParticipant;
}
@@ -50,6 +51,7 @@ public Participant createParticipant(String userName, ParticipantType participan
* {@inheritDoc}
*/
@Override
+ @Transactional
public void saveParticipant(Participant participant){
participantRepository.save(participant);
}
diff --git a/src/main/java/edu/itu/cavabunga/exception/Conflict.java b/src/main/java/edu/itu/cavabunga/exception/Conflict.java
index 227b5bd..4991794 100755
--- a/src/main/java/edu/itu/cavabunga/exception/Conflict.java
+++ b/src/main/java/edu/itu/cavabunga/exception/Conflict.java
@@ -1,7 +1,6 @@
package edu.itu.cavabunga.exception;
public class Conflict extends RuntimeException {
-
public Conflict(){
}
@@ -12,7 +11,4 @@ public Conflict(String message){
public Conflict(Throwable cause){
super(cause);
}
-
-
-
}
diff --git a/src/main/java/edu/itu/cavabunga/exception/NotFound.java b/src/main/java/edu/itu/cavabunga/exception/NotFound.java
index f3ceb35..85b1a57 100755
--- a/src/main/java/edu/itu/cavabunga/exception/NotFound.java
+++ b/src/main/java/edu/itu/cavabunga/exception/NotFound.java
@@ -8,10 +8,7 @@ public NotFound(){
public NotFound(String message){
super(message);
}
-
public NotFound(Throwable cause){
super(cause);
}
-
-
}
diff --git a/src/main/java/edu/itu/cavabunga/exception/Validation.java b/src/main/java/edu/itu/cavabunga/exception/Validation.java
new file mode 100644
index 0000000..dea12fd
--- /dev/null
+++ b/src/main/java/edu/itu/cavabunga/exception/Validation.java
@@ -0,0 +1,10 @@
+package edu.itu.cavabunga.exception;
+
+public class Validation extends RuntimeException {
+ public Validation(){
+
+ }
+
+ public Validation(String message) { super(message); }
+ public Validation(Throwable cause) { super(cause); }
+}