* Create annotator instance depending on type of annotation + *
* - * @param annotationData annotation - * @param pageData document - * @return annotator instance + * @return + * @param annotationData AnnotationDataEntity + * @param pageInfo PageInfo */ - public static Annotator createAnnotator(AnnotationDataEntity annotationData, PageData pageData) { - switch (annotationData.getType()) { - case "text": - return new TextAnnotator(annotationData, pageData); + public static BaseAnnotator createAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) { + AnnotationDataEntity roundedAnnotationData = roundCoordinates(annotationData); + switch (roundedAnnotationData.getType().toLowerCase()) { // addev .toLowerCase() + case "texthighlight": //textHighlight + return new TextHighlightAnnotator(roundedAnnotationData, pageInfo); case "area": - return new AreaAnnotator(annotationData, pageData); + return new AreaAnnotator(roundedAnnotationData, pageInfo); case "point": - return new PointAnnotator(annotationData, pageData); - case "textStrikeout": - return new TexStrikeoutAnnotator(annotationData, pageData); + return new PointAnnotator(roundedAnnotationData, pageInfo); + case "textstrikeout": //textStrikeout + return new TextStrikeoutAnnotator(roundedAnnotationData, pageInfo); case "polyline": - return new PolylineAnnotator(annotationData, pageData); - case "textField": - return new TextFieldAnnotator(annotationData, pageData); + return new PolylineAnnotator(roundedAnnotationData, pageInfo); + case "textfield": //textField + return new TextFieldAnnotator(roundedAnnotationData, pageInfo); case "watermark": - return new WatermarkAnnotator(annotationData, pageData); - case "textReplacement": - return new TextReplacementAnnotator(annotationData, pageData); + return new WatermarkAnnotator(roundedAnnotationData, pageInfo); + case "textreplacement": //textReplacement + return new TextReplacementAnnotator(roundedAnnotationData, pageInfo); case "arrow": - return new ArrowAnnotator(annotationData, pageData); - case "textRedaction": - return new TextRedactionAnnotator(annotationData, pageData); - case "resourcesRedaction": - return new ResourceRedactionAnnotator(annotationData, pageData); - case "textUnderline": - return new TexUnderlineAnnotator(annotationData, pageData); + return new ArrowAnnotator(roundedAnnotationData, pageInfo); + case "textredaction": //textRedaction + return new TextRedactionAnnotator(roundedAnnotationData, pageInfo); + case "resourcesredaction": //resourcesRedaction + return new ResourceRedactionAnnotator(roundedAnnotationData, pageInfo); + case "textunderline": //textUnderline + return new TextUnderlineAnnotator(roundedAnnotationData, pageInfo); case "distance": - return new DistanceAnnotator(annotationData, pageData); + return new DistanceAnnotator(roundedAnnotationData, pageInfo); default: throw new TotalGroupDocsException("Wrong annotation data without annotation type!"); } } -} + + private static AnnotationDataEntity roundCoordinates(AnnotationDataEntity annotationData) { + annotationData.setHeight((float) Math.round(annotationData.getHeight())); + annotationData.setLeft((float) Math.round(annotationData.getLeft())); + annotationData.setTop((float) Math.round(annotationData.getTop())); + annotationData.setWidth((float) Math.round(annotationData.getWidth())); + return annotationData; + } +} \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/annotator/AreaAnnotator.java b/src/main/java/com/groupdocs/ui/annotation/annotator/AreaAnnotator.java index 63ca156..0e89848 100644 --- a/src/main/java/com/groupdocs/ui/annotation/annotator/AreaAnnotator.java +++ b/src/main/java/com/groupdocs/ui/annotation/annotator/AreaAnnotator.java @@ -1,64 +1,55 @@ package com.groupdocs.ui.annotation.annotator; -import com.groupdocs.annotation.domain.*; +import com.groupdocs.annotation.models.PageInfo; +import com.groupdocs.annotation.models.annotationmodels.AnnotationBase; +import com.groupdocs.annotation.models.annotationmodels.AreaAnnotation; +import com.groupdocs.annotation.options.export.AnnotationType; import com.groupdocs.ui.annotation.entity.web.AnnotationDataEntity; -import java.text.ParseException; +public class AreaAnnotator extends BaseAnnotator { -/** - * AreaAnnotator - * Annotates documents with the area annotation - * - * @author Aspose Pty Ltd - */ -public class AreaAnnotator extends Annotator { + private AreaAnnotation areaAnnotation; - public AreaAnnotator(AnnotationDataEntity annotationData, PageData pageData) { - super(annotationData, pageData); - } + public AreaAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) { + super(annotationData, pageInfo); - @Override - public AnnotationInfo annotateWord() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); + areaAnnotation = new AreaAnnotation(); + areaAnnotation.setBox(getBox()); } @Override - public AnnotationInfo annotatePdf() throws ParseException { - // initiate AnnotationInfo object - AnnotationInfo areaAnnotation = initAnnotationInfo(); - // set annotation X, Y position - areaAnnotation.setAnnotationPosition(new Point(annotationData.getLeft(), annotationData.getTop())); - // add replies + public AnnotationBase annotateWord() { + areaAnnotation = (AreaAnnotation) initAnnotationBase(areaAnnotation); return areaAnnotation; } @Override - public AnnotationInfo annotateCells() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); + public AnnotationBase annotatePdf() { + return annotateWord(); } @Override - public AnnotationInfo annotateSlides() throws ParseException { - return initAnnotationInfo(); + public AnnotationBase annotateCells() { + return annotateWord(); } @Override - public AnnotationInfo annotateImage() throws ParseException { - return initAnnotationInfo(); + public AnnotationBase annotateSlides() { + return annotateWord(); } @Override - public AnnotationInfo annotateDiagram() throws ParseException { - return initAnnotationInfo(); + public AnnotationBase annotateImage() { + return annotateWord(); } @Override - protected byte getType() { - return AnnotationType.Area; + public AnnotationBase annotateDiagram() { + return annotateWord(); } @Override - protected Rectangle getBox() { - return new Rectangle(annotationData.getLeft(), annotationData.getTop(), annotationData.getWidth(), annotationData.getHeight()); + protected int getType() { + return AnnotationType.Area; } -} \ No newline at end of file +} diff --git a/src/main/java/com/groupdocs/ui/annotation/annotator/ArrowAnnotator.java b/src/main/java/com/groupdocs/ui/annotation/annotator/ArrowAnnotator.java index 0b0aa0e..550f9e7 100644 --- a/src/main/java/com/groupdocs/ui/annotation/annotator/ArrowAnnotator.java +++ b/src/main/java/com/groupdocs/ui/annotation/annotator/ArrowAnnotator.java @@ -1,86 +1,90 @@ package com.groupdocs.ui.annotation.annotator; -import com.groupdocs.annotation.domain.AnnotationInfo; -import com.groupdocs.annotation.domain.AnnotationReplyInfo; -import com.groupdocs.annotation.domain.AnnotationType; -import com.groupdocs.annotation.domain.PageData; +import com.groupdocs.annotation.models.PageInfo; +import com.groupdocs.annotation.models.Rectangle; +import com.groupdocs.annotation.models.Reply; +import com.groupdocs.annotation.models.annotationmodels.AnnotationBase; +import com.groupdocs.annotation.models.annotationmodels.ArrowAnnotation; +import com.groupdocs.annotation.options.export.AnnotationType; import com.groupdocs.ui.annotation.entity.web.AnnotationDataEntity; import com.groupdocs.ui.annotation.entity.web.CommentsEntity; -import java.text.ParseException; - -/** - * TextAnnotator - * Annotates documents with the text annotation - * - * @author Aspose Pty Ltd - */ -public class ArrowAnnotator extends AbstractBoxAnnotator { +public class ArrowAnnotator extends BaseAnnotator { private boolean withGuid = false; + private ArrowAnnotation arrowAnnotation; + + public ArrowAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) { + super(annotationData, pageInfo); - public ArrowAnnotator(AnnotationDataEntity annotationData, PageData pageData) { - super(annotationData, pageData); + this.arrowAnnotation = new ArrowAnnotation(); + this.arrowAnnotation.setBox(getBox()); } @Override - public AnnotationInfo annotateWord() throws ParseException { + public AnnotationBase annotateWord() { withGuid = false; - AnnotationInfo arrowAnnotation = initAnnotationInfo(); + arrowAnnotation = (ArrowAnnotation) initAnnotationBase(arrowAnnotation); return arrowAnnotation; } @Override - public AnnotationInfo annotatePdf() throws ParseException { - withGuid = false; - AnnotationInfo arrowAnnotation = initAnnotationInfo(); - return arrowAnnotation; + public AnnotationBase annotatePdf() { + return annotateWord(); } @Override - public AnnotationInfo annotateCells() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); + public AnnotationBase annotateCells() { + return annotateWord(); } @Override - public AnnotationInfo annotateSlides() throws ParseException { + public AnnotationBase annotateSlides() { withGuid = true; - // init annotation object - AnnotationInfo arrowAnnotation = initAnnotationInfo(); - arrowAnnotation.setBackgroundColor(15988609); + arrowAnnotation = (ArrowAnnotation) initAnnotationBase(arrowAnnotation); return arrowAnnotation; } @Override - public AnnotationInfo annotateImage() throws ParseException { - withGuid = false; - // init annotation object - AnnotationInfo arrowAnnotation = initAnnotationInfo(); - arrowAnnotation.setBackgroundColor(-15988609); - return arrowAnnotation; + public AnnotationBase annotateImage() { + return annotateWord(); } @Override - public AnnotationInfo annotateDiagram() throws ParseException { - withGuid = false; - // init annotation object - AnnotationInfo arrowAnnotation = initAnnotationInfo(); - arrowAnnotation.setBackgroundColor(15988609); - return arrowAnnotation; + public AnnotationBase annotateDiagram() { + return annotateWord(); } @Override - protected AnnotationReplyInfo getAnnotationReplyInfo(CommentsEntity comment) throws ParseException { - AnnotationReplyInfo annotationReplyInfo = super.getAnnotationReplyInfo(comment); + protected Reply getAnnotationReplyInfo(CommentsEntity comment) { + Reply annotationReplyInfo = super.getAnnotationReplyInfo(comment); if (withGuid) { - annotationReplyInfo.setParentReplyGuid(String.valueOf(annotationData.getId())); + annotationReplyInfo.setParentReply(new Reply()); + annotationReplyInfo.getParentReply().setId(annotationData.getId()); } return annotationReplyInfo; } @Override - protected byte getType() { + protected int getType() { return AnnotationType.Arrow; } + @Override + protected Rectangle getBox() { + String svgPath = annotationData.getSvgPath(); + + String startPoint = svgPath.replace("[a-zA-Z]+", "").split(" ")[0]; + String endPoint = svgPath.replace("[a-zA-Z]+", "").split(" ")[1]; + + String[] start = startPoint.split(","); + float startX = Float.parseFloat(start.length > 0 ? start[0].replace("M", "").replace(",", ".") : "0"); + float startY = Float.parseFloat(start.length > 0 ? start[1].replace("M", "").replace(",", ".") : "0"); + + String[] end = endPoint.split(","); + float endX = Float.parseFloat(end.length > 0 ? end[0].replace("L", "").replace(",", ".") : "0") - startX; + float endY = Float.parseFloat(end.length > 1 ? end[1].replace("L", "").replace(",", ".") : "0") - startY; + + return new Rectangle(startX, startY, endX, endY); + } } \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/annotator/BaseAnnotator.java b/src/main/java/com/groupdocs/ui/annotation/annotator/BaseAnnotator.java new file mode 100644 index 0000000..9f70db9 --- /dev/null +++ b/src/main/java/com/groupdocs/ui/annotation/annotator/BaseAnnotator.java @@ -0,0 +1,225 @@ +package com.groupdocs.ui.annotation.annotator; + + +import com.groupdocs.annotation.models.PageInfo; +import com.groupdocs.annotation.models.Rectangle; +import com.groupdocs.annotation.models.Reply; +import com.groupdocs.annotation.models.User; +import com.groupdocs.annotation.models.annotationmodels.AnnotationBase; +import com.groupdocs.ui.annotation.entity.web.AnnotationDataEntity; +import com.groupdocs.ui.annotation.entity.web.CommentsEntity; +import com.groupdocs.ui.exception.TotalGroupDocsException; +import java.text.DateFormat; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.time.Instant; +import java.util.ArrayList; +import java.util.Locale; +import java.util.TimeZone; + +/** + *+ * BaseSigner + *
+ */ +public abstract class BaseAnnotator { + + public String Message = "Annotation of type {0} for this file type is not supported"; + protected AnnotationDataEntity annotationData; + protected PageInfo pageInfo; + + /** + *+ * Constructor + *
+ * + * @param annotationData + * @param pageInfo + */ + protected BaseAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) { + this.annotationData = annotationData; + this.pageInfo = pageInfo; + } + + /** + *+ * Add area annotation into the Word document + *
+ * + * @return AnnotationBase + */ + public abstract AnnotationBase annotateWord(); + + /** + *+ * Add area annotation into the pdf document + *
+ * + * @return AnnotationBase + */ + public abstract AnnotationBase annotatePdf(); + + /////+ * Add area annotation into the Power Point document + *
+ * + * @return AnnotationBase + */ + public abstract AnnotationBase annotateSlides(); + + /** + *+ * Add area annotation into the image document + *
+ * + * @return AnnotationBase + */ + public abstract AnnotationBase annotateImage(); + + /** + *+ * Add area annotation into the document + *
+ * + * @return AnnotationBase + */ + public abstract AnnotationBase annotateDiagram(); + + /** + *+ * Initial for annotation info + *
+ * + * @param annotationBase + * @return AnnotationBase + */ + protected final AnnotationBase initAnnotationBase(AnnotationBase annotationBase) { + // set page number to add annotation + annotationBase.setPageNumber(annotationData.getPageNumber() - 1); + // set annotation type + annotationBase.setType(getType()); + annotationBase.setCreatedOn(Date.from(Instant.now())); + annotationBase.setId(annotationData.getId()); + // add replies + CommentsEntity[] comments = annotationData.getComments(); + if (comments != null && comments.length != 0) { + java.util.List+ * Initial for reply annotation info + *
+ * + * @return AnnotationReplyInfo + * @param comment CommentsEntity + */ + protected Reply getAnnotationReplyInfo(CommentsEntity comment) { + Reply reply = new Reply(); + reply.setComment(comment.getText()); + DateFormat format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss"); + format.setTimeZone(TimeZone.getTimeZone("GMT")); + Date date; + try { + date = new Date(Long.parseLong(comment.getTime())); + } catch (Exception e) { + try { + date = format.parse(comment.getTime()); + } catch (Exception exc) { + format = new SimpleDateFormat("EEE, dd MMM yyyy HH:mm:ss z", Locale.US); + try { + date = format.parse(comment.getTime()); + } catch (ParseException ex) { + throw new TotalGroupDocsException(ex); + } + } + } + reply.setRepliedOn(date); + reply.setUser(new User()); + reply.getUser().setName(comment.getUserName()); + return reply; + } + + /** + *+ * Get rectangle + *
+ * + * @return Rectangle + */ + protected Rectangle getBox() { + return new Rectangle(annotationData.getLeft(), annotationData.getTop(), annotationData.getWidth(), annotationData.getHeight()); + } + + /** + *+ * Get type of annotation + *
+ * + * @return byte + */ + protected abstract int getType(); + + /** + *+ * Get Annotation info depending on document type + *
+ * + * @return AnnotationBase + * @param documentType string + */ + public final AnnotationBase getAnnotationBase(String documentType) { + switch (documentType) { + case "Portable Document Format": + return annotatePdf(); + case "Microsoft Word": + case "Open Document Text": + return annotateWord(); + case "Rich Text Format": + return annotateWord(); + case "Microsoft PowerPoint": + return annotateSlides(); + case "image": + return annotateImage(); + case "Microsoft Excel": + return annotateCells(); + case "AutoCAD Drawing File Format": + return annotateDiagram(); + default: + throw new TotalGroupDocsException("Wrong annotation data without document type!"); + } + } + + /** + *+ * Check if the current annotatin is supported + *
+ * + * @return + * @param documentType string + */ + public final boolean isSupported(String documentType) { + try { + AnnotatorFactory.createAnnotator(annotationData, pageInfo).getAnnotationBase(documentType); + return true; + } catch (java.lang.UnsupportedOperationException e) { + Message += annotationData.getType(); + return false; + } + } +} \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/annotator/DistanceAnnotator.java b/src/main/java/com/groupdocs/ui/annotation/annotator/DistanceAnnotator.java index 0c4b843..a51cfee 100644 --- a/src/main/java/com/groupdocs/ui/annotation/annotator/DistanceAnnotator.java +++ b/src/main/java/com/groupdocs/ui/annotation/annotator/DistanceAnnotator.java @@ -1,84 +1,92 @@ package com.groupdocs.ui.annotation.annotator; -import com.groupdocs.annotation.domain.AnnotationInfo; -import com.groupdocs.annotation.domain.AnnotationReplyInfo; -import com.groupdocs.annotation.domain.AnnotationType; -import com.groupdocs.annotation.domain.PageData; +import com.groupdocs.annotation.models.PageInfo; +import com.groupdocs.annotation.models.Rectangle; +import com.groupdocs.annotation.models.Reply; +import com.groupdocs.annotation.models.annotationmodels.AnnotationBase; +import com.groupdocs.annotation.models.annotationmodels.DistanceAnnotation; +import com.groupdocs.annotation.options.export.AnnotationType; import com.groupdocs.ui.annotation.entity.web.AnnotationDataEntity; import com.groupdocs.ui.annotation.entity.web.CommentsEntity; -import java.text.ParseException; +public class DistanceAnnotator extends BaseAnnotator { -/** - * TextAnnotator - * Annotates documents with the text annotation - * - * @author Aspose Pty Ltd - */ -public class DistanceAnnotator extends AbstractBoxAnnotator { + private DistanceAnnotation distanceAnnotation; - public DistanceAnnotator(AnnotationDataEntity annotationData, PageData pageData) { - super(annotationData, pageData); + public DistanceAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) { + super(annotationData, pageInfo); + + distanceAnnotation = new DistanceAnnotation(); + distanceAnnotation.setBox(getBox()); } @Override - public AnnotationInfo annotateWord() throws ParseException { - AnnotationInfo distanceAnnotation = initAnnotationInfo(); + public AnnotationBase annotateWord() { + distanceAnnotation = (DistanceAnnotation) initAnnotationBaseDistanceAnnotator(distanceAnnotation); return distanceAnnotation; } @Override - public AnnotationInfo annotatePdf() throws ParseException { - AnnotationInfo distanceAnnotation = initAnnotationInfo(); - return distanceAnnotation; + public AnnotationBase annotatePdf() { + return annotateWord(); } @Override - public AnnotationInfo annotateCells() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); + public AnnotationBase annotateCells() { + return annotateWord(); } @Override - public AnnotationInfo annotateSlides() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); + public AnnotationBase annotateSlides() { + return annotateWord(); } @Override - public AnnotationInfo annotateImage() throws ParseException { - // init annotation object - AnnotationInfo distanceAnnotation = initAnnotationInfo(); - distanceAnnotation.setBackgroundColor(15988609); - return distanceAnnotation; + public AnnotationBase annotateImage() { + return annotateWord(); } - @Override - public AnnotationInfo annotateDiagram() throws ParseException { - // init annotation object - AnnotationInfo distanceAnnotation = initAnnotationInfo(); - distanceAnnotation.setBackgroundColor(15988609); - return distanceAnnotation; + public AnnotationBase annotateDiagram() { + return annotateWord(); } - @Override - protected AnnotationInfo initAnnotationInfo() throws ParseException { - AnnotationInfo distanceAnnotation = super.initAnnotationInfo(); + protected final AnnotationBase initAnnotationBaseDistanceAnnotator(AnnotationBase annotationBase) { + distanceAnnotation = (DistanceAnnotation) super.initAnnotationBase(annotationBase); + String tmp0 = annotationData.getText(); + if (tmp0 == null) { + tmp0 = ""; + } // add replies - String text = (annotationData.getText() == null) ? "" : annotationData.getText(); + String text = tmp0; CommentsEntity[] comments = annotationData.getComments(); if (comments != null && comments.length != 0) { - AnnotationReplyInfo reply = distanceAnnotation.getReplies()[0]; + Reply reply = distanceAnnotation.getReplies().get(0); if (reply != null) { - reply.setMessage(String.format("%s %s", annotationData.getText(), reply.getMessage())); + reply.setComment(String.format("{0} {1}", text, reply.getComment())); } - } else { - distanceAnnotation.setFieldText(text); } + return distanceAnnotation; } @Override - protected byte getType() { + protected int getType() { return AnnotationType.Distance; } -} \ No newline at end of file + + @Override + protected Rectangle getBox() { + String svgPath = annotationData.getSvgPath(); + + String startPoint = svgPath.replaceAll("[a-zA-Z]+", "").split(" ")[0]; + String endPoint = svgPath.replaceAll("[a-zA-Z]+", "").split(" ")[1]; + String[] start = startPoint.split(","); + float startX = Float.parseFloat(start.length > 0 ? start[0] : "0"); + float startY = Float.parseFloat(start.length > 1 ? start[1] : "0"); + String[] end = endPoint.split(","); + float endX = Float.parseFloat(end.length > 0 ? end[0] : "0") - startX; + float endY = Float.parseFloat(end.length > 1 ? end[1] : "0") - startY; + return new Rectangle(startX, startY, endX, endY); + } +} diff --git a/src/main/java/com/groupdocs/ui/annotation/annotator/PointAnnotator.java b/src/main/java/com/groupdocs/ui/annotation/annotator/PointAnnotator.java index f1cbbe2..2a4efe5 100644 --- a/src/main/java/com/groupdocs/ui/annotation/annotator/PointAnnotator.java +++ b/src/main/java/com/groupdocs/ui/annotation/annotator/PointAnnotator.java @@ -1,69 +1,56 @@ package com.groupdocs.ui.annotation.annotator; -import com.groupdocs.annotation.domain.*; +import com.groupdocs.annotation.models.PageInfo; +import com.groupdocs.annotation.models.annotationmodels.AnnotationBase; +import com.groupdocs.annotation.models.annotationmodels.PointAnnotation; +import com.groupdocs.annotation.options.export.AnnotationType; import com.groupdocs.ui.annotation.entity.web.AnnotationDataEntity; -import java.text.ParseException; -/** - * TextAnnotator - * Annotates documents with the text annotation - * - * @author Aspose Pty Ltd - */ -public class PointAnnotator extends Annotator { +public class PointAnnotator extends BaseAnnotator { - public PointAnnotator(AnnotationDataEntity annotationData, PageData pageData) { - super(annotationData, pageData); - } + private PointAnnotation pointAnnotation; - @Override - public AnnotationInfo annotateWord() throws ParseException { - return initAnnotationInfo(); - } + public PointAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) { + super(annotationData, pageInfo); - @Override - public AnnotationInfo annotatePdf() throws ParseException { - return initAnnotationInfo(); + pointAnnotation = new PointAnnotation(); + pointAnnotation.setBox(getBox()); } @Override - protected AnnotationInfo initAnnotationInfo() throws ParseException { - // init annotation object - AnnotationInfo pointAnnotation = super.initAnnotationInfo(); - // set annotation position - pointAnnotation.setAnnotationPosition(new Point(annotationData.getLeft(), annotationData.getTop())); + public AnnotationBase annotateWord() { + pointAnnotation = (PointAnnotation) super.initAnnotationBase(pointAnnotation); return pointAnnotation; } @Override - public AnnotationInfo annotateCells() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); + public AnnotationBase annotatePdf() { + return annotateWord(); } @Override - public AnnotationInfo annotateSlides() throws ParseException { - return initAnnotationInfo(); + public AnnotationBase annotateCells() { + return annotateWord(); } @Override - public AnnotationInfo annotateImage() throws ParseException { - return initAnnotationInfo(); + public AnnotationBase annotateSlides() { + return annotateWord(); } - @Override - public AnnotationInfo annotateDiagram() throws ParseException { - return initAnnotationInfo(); + public AnnotationBase annotateImage() { + return annotateWord(); } @Override - protected Rectangle getBox() { - return new Rectangle(annotationData.getLeft(), annotationData.getTop(), annotationData.getWidth(), annotationData.getHeight()); + public AnnotationBase annotateDiagram() { + return annotateWord(); } @Override - protected byte getType() { + protected int getType() { return AnnotationType.Point; } -} \ No newline at end of file +} diff --git a/src/main/java/com/groupdocs/ui/annotation/annotator/PolylineAnnotator.java b/src/main/java/com/groupdocs/ui/annotation/annotator/PolylineAnnotator.java index c984c1a..96a5df6 100644 --- a/src/main/java/com/groupdocs/ui/annotation/annotator/PolylineAnnotator.java +++ b/src/main/java/com/groupdocs/ui/annotation/annotator/PolylineAnnotator.java @@ -1,92 +1,79 @@ package com.groupdocs.ui.annotation.annotator; -import com.groupdocs.annotation.domain.AnnotationInfo; -import com.groupdocs.annotation.domain.AnnotationType; -import com.groupdocs.annotation.domain.PageData; -import com.groupdocs.annotation.domain.Rectangle; +import com.groupdocs.annotation.models.PageInfo; +import com.groupdocs.annotation.models.User; +import com.groupdocs.annotation.models.annotationmodels.AnnotationBase; +import com.groupdocs.annotation.models.annotationmodels.PolylineAnnotation; +import com.groupdocs.annotation.options.export.AnnotationType; import com.groupdocs.ui.annotation.entity.web.AnnotationDataEntity; import com.groupdocs.ui.annotation.entity.web.CommentsEntity; -import java.text.ParseException; -/** - * TextAnnotator - * Annotates documents with the text annotation - * - * @author Aspose Pty Ltd - */ -public class PolylineAnnotator extends Annotator { +public class PolylineAnnotator extends BaseAnnotator { - public PolylineAnnotator(AnnotationDataEntity annotationData, PageData pageData) { - super(annotationData, pageData); - } + private PolylineAnnotation polylineAnnotation; - @Override - public AnnotationInfo annotateWord() throws ParseException { - return initAnnotationInfo(); - } + public PolylineAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) { + super(annotationData, pageInfo); + this.polylineAnnotation = new PolylineAnnotation(); + this.polylineAnnotation.setBox(getBox()); + this.polylineAnnotation.setPenColor(1201033); + this.polylineAnnotation.setPenWidth((byte) 2); + this.polylineAnnotation.setSvgPath(annotationData.getSvgPath()); + } @Override - public AnnotationInfo annotatePdf() throws ParseException { - AnnotationInfo polylineAnnotation = initAnnotationInfo(); + public AnnotationBase annotateWord() { + polylineAnnotation = (PolylineAnnotation) initAnnotationBase(polylineAnnotation); return polylineAnnotation; } @Override - protected AnnotationInfo initAnnotationInfo() throws ParseException { - AnnotationInfo polylineAnnotation = super.initAnnotationInfo(); - polylineAnnotation.setPenColor(1201033); - polylineAnnotation.setPenWidth((byte) 2); - polylineAnnotation.setSvgPath(annotationData.getSvgPath()); - return polylineAnnotation; + public AnnotationBase annotatePdf() { + return annotateWord(); } @Override - public AnnotationInfo annotateCells() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); + public AnnotationBase annotateCells() { + return annotateWord(); } @Override - public AnnotationInfo annotateSlides() throws ParseException { - AnnotationInfo polylineAnnotation = initAnnotationInfo(); - fillCreatorName(polylineAnnotation); + public AnnotationBase annotateSlides() { + polylineAnnotation = (PolylineAnnotation) initAnnotationBase(polylineAnnotation); + fillCreatorName(polylineAnnotation, annotationData); return polylineAnnotation; } /** + ** Fill creator name field in annotation info + *
* - * @param polylineAnnotation annotation info + * @param polylineAnnotation AnnotationBase + * @param annotationData */ - protected void fillCreatorName(AnnotationInfo polylineAnnotation) { + protected static void fillCreatorName(AnnotationBase polylineAnnotation, AnnotationDataEntity annotationData) { CommentsEntity[] comments = annotationData.getComments(); if (comments != null && comments.length > 0 && comments[0] != null) { - polylineAnnotation.setCreatorName(comments[0].getUserName()); + polylineAnnotation.setUser(new User()); + polylineAnnotation.getUser().setName(comments[0].getUserName()); } } @Override - public AnnotationInfo annotateImage() throws ParseException { - AnnotationInfo polylineAnnotation = initAnnotationInfo(); - fillCreatorName(polylineAnnotation); - return polylineAnnotation; - } - - @Override - public AnnotationInfo annotateDiagram() throws ParseException { - AnnotationInfo polylineAnnotation = initAnnotationInfo(); - fillCreatorName(polylineAnnotation); - return polylineAnnotation; + public AnnotationBase annotateImage() { + return annotateSlides(); } @Override - protected Rectangle getBox() { - return new Rectangle(annotationData.getLeft(), annotationData.getTop(), annotationData.getWidth(), annotationData.getHeight()); + public AnnotationBase annotateDiagram() { + return annotateSlides(); } @Override - protected byte getType() { + protected int getType() { return AnnotationType.Polyline; } -} \ No newline at end of file +} diff --git a/src/main/java/com/groupdocs/ui/annotation/annotator/ResourceRedactionAnnotator.java b/src/main/java/com/groupdocs/ui/annotation/annotator/ResourceRedactionAnnotator.java index 6ba6625..1933748 100644 --- a/src/main/java/com/groupdocs/ui/annotation/annotator/ResourceRedactionAnnotator.java +++ b/src/main/java/com/groupdocs/ui/annotation/annotator/ResourceRedactionAnnotator.java @@ -1,68 +1,57 @@ package com.groupdocs.ui.annotation.annotator; -import com.groupdocs.annotation.domain.*; +import com.groupdocs.annotation.models.PageInfo; +import com.groupdocs.annotation.models.annotationmodels.AnnotationBase; +import com.groupdocs.annotation.models.annotationmodels.ResourcesRedactionAnnotation; +import com.groupdocs.annotation.options.export.AnnotationType; import com.groupdocs.ui.annotation.entity.web.AnnotationDataEntity; +import com.groupdocs.ui.exception.TotalGroupDocsException; -import java.text.ParseException; -/** - * AreaAnnotator - * Annotates documents with the area annotation - * - * @author Aspose Pty Ltd - */ -public class ResourceRedactionAnnotator extends Annotator { +public class ResourceRedactionAnnotator extends BaseAnnotator { - public ResourceRedactionAnnotator(AnnotationDataEntity annotationData, PageData pageData) { - super(annotationData, pageData); - } + private ResourcesRedactionAnnotation resourcesRedactionAnnotation; - @Override - public AnnotationInfo annotateWord() throws ParseException { - AnnotationInfo resourceRedactionAnnotation = initAnnotationInfo(); - return resourceRedactionAnnotation; + public ResourceRedactionAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) { + super(annotationData, pageInfo); + + this.resourcesRedactionAnnotation = new ResourcesRedactionAnnotation(); + this.resourcesRedactionAnnotation.setBox(getBox()); } @Override - public AnnotationInfo annotatePdf() throws ParseException { - // initiate AnnotationInfo object - AnnotationInfo resourceRedactionAnnotation = initAnnotationInfo(); - // set annotation X, Y position - resourceRedactionAnnotation.setAnnotationPosition(new Point(annotationData.getLeft(), annotationData.getTop())); - return resourceRedactionAnnotation; + public AnnotationBase annotateWord() { + resourcesRedactionAnnotation = (ResourcesRedactionAnnotation) initAnnotationBase(resourcesRedactionAnnotation); + return resourcesRedactionAnnotation; } @Override - public AnnotationInfo annotateCells() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); + public AnnotationBase annotatePdf() { + return annotateWord(); } @Override - public AnnotationInfo annotateSlides() throws ParseException { - AnnotationInfo resourceRedactionAnnotation = initAnnotationInfo(); - return resourceRedactionAnnotation; + public AnnotationBase annotateCells() { + throw new TotalGroupDocsException(Message + annotationData.getType()); } @Override - public AnnotationInfo annotateImage() throws ParseException { - AnnotationInfo resourceRedactionAnnotation = initAnnotationInfo(); - return resourceRedactionAnnotation; + public AnnotationBase annotateSlides() { + return annotateWord(); } @Override - public AnnotationInfo annotateDiagram() throws ParseException { - // init annotation object - AnnotationInfo resourceRedactionAnnotation = initAnnotationInfo(); - return resourceRedactionAnnotation; + public AnnotationBase annotateImage() { + return annotateWord(); } @Override - protected Rectangle getBox() { - return new Rectangle(annotationData.getLeft(), annotationData.getTop(), annotationData.getWidth(), annotationData.getHeight()); + public AnnotationBase annotateDiagram() { + return annotateWord(); } @Override - protected byte getType() { + protected int getType() { return AnnotationType.ResourcesRedaction; } } \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/annotator/TexStrikeoutAnnotator.java b/src/main/java/com/groupdocs/ui/annotation/annotator/TexStrikeoutAnnotator.java deleted file mode 100644 index f90e6b3..0000000 --- a/src/main/java/com/groupdocs/ui/annotation/annotator/TexStrikeoutAnnotator.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.groupdocs.ui.annotation.annotator; - -import com.groupdocs.annotation.domain.AnnotationInfo; -import com.groupdocs.annotation.domain.AnnotationType; -import com.groupdocs.annotation.domain.PageData; -import com.groupdocs.annotation.domain.Point; -import com.groupdocs.ui.annotation.entity.web.AnnotationDataEntity; - -import java.text.ParseException; - -/** - * TextAnnotator - * Annotates documents with the text annotation - * - * @author Aspose Pty Ltd - */ -public class TexStrikeoutAnnotator extends AbstractSvgAnnotator { - - public TexStrikeoutAnnotator(AnnotationDataEntity annotationData, PageData pageData) { - super(annotationData, pageData); - } - - @Override - public AnnotationInfo annotateWord() throws ParseException { - // init possible types of annotations - AnnotationInfo strikeoutAnnotation = initAnnotationInfo(); - fixBox(strikeoutAnnotation); - return strikeoutAnnotation; - } - - @Override - public AnnotationInfo annotatePdf() throws ParseException { - AnnotationInfo strikeoutAnnotation = initAnnotationInfo(); - strikeoutAnnotation.setAnnotationPosition(new Point(annotationData.getLeft(), annotationData.getTop())); - strikeoutAnnotation.setPenColor(0); - strikeoutAnnotation.setGuid(String.valueOf(annotationData.getId())); - return strikeoutAnnotation; - } - - @Override - public AnnotationInfo annotateCells() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); - } - - @Override - public AnnotationInfo annotateSlides() throws ParseException { - AnnotationInfo strikeoutAnnotation = initAnnotationInfo(); - fixBox(strikeoutAnnotation); - strikeoutAnnotation.setAnnotationPosition(new Point(annotationData.getLeft(), annotationData.getTop())); - strikeoutAnnotation.setPenColor(0); - return strikeoutAnnotation; - } - - @Override - public AnnotationInfo annotateImage() throws ParseException { - return initAnnotationInfo(); - } - - @Override - public AnnotationInfo annotateDiagram() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); - } - - @Override - protected byte getType() { - return AnnotationType.TextStrikeout; - } -} \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/annotator/TexUnderlineAnnotator.java b/src/main/java/com/groupdocs/ui/annotation/annotator/TexUnderlineAnnotator.java deleted file mode 100644 index 727476c..0000000 --- a/src/main/java/com/groupdocs/ui/annotation/annotator/TexUnderlineAnnotator.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.groupdocs.ui.annotation.annotator; - -import com.groupdocs.annotation.domain.AnnotationInfo; -import com.groupdocs.annotation.domain.AnnotationType; -import com.groupdocs.annotation.domain.PageData; -import com.groupdocs.annotation.domain.Point; -import com.groupdocs.ui.annotation.entity.web.AnnotationDataEntity; - -import java.text.ParseException; - -/** - * TextAnnotator - * Annotates documents with the text annotation - * - * @author Aspose Pty Ltd - */ -public class TexUnderlineAnnotator extends AbstractSvgAnnotator { - - public TexUnderlineAnnotator(AnnotationDataEntity annotationData, PageData pageData) { - super(annotationData, pageData); - } - - @Override - public AnnotationInfo annotateWord() throws ParseException { - // init possible types of annotations - AnnotationInfo underlineAnnotation = initAnnotationInfo(); - // set line color - underlineAnnotation.setPenColor(1201033); - fixBox(underlineAnnotation); - return underlineAnnotation; - } - - @Override - public AnnotationInfo annotatePdf() throws ParseException { - AnnotationInfo underlineAnnotation = initAnnotationInfo(); - underlineAnnotation.setGuid(String.valueOf(annotationData.getId())); - underlineAnnotation.setAnnotationPosition(new Point(annotationData.getLeft(), annotationData.getTop())); - underlineAnnotation.setPenColor(1201033); - return underlineAnnotation; - } - - @Override - public AnnotationInfo annotateCells() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); - } - - @Override - public AnnotationInfo annotateSlides() throws ParseException { - AnnotationInfo underlineAnnotation = initAnnotationInfo(); - fixBox(underlineAnnotation); - underlineAnnotation.setPenColor(0); - underlineAnnotation.setAnnotationPosition(new Point(annotationData.getLeft(), annotationData.getTop())); - return underlineAnnotation; - } - - @Override - public AnnotationInfo annotateImage() throws ParseException { - AnnotationInfo annotationInfo = initAnnotationInfo(); - return annotationInfo; - } - - @Override - public AnnotationInfo annotateDiagram() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); - } - - @Override - protected byte getType() { - return AnnotationType.TextUnderline; - } -} \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/annotator/TextAnnotator.java b/src/main/java/com/groupdocs/ui/annotation/annotator/TextAnnotator.java deleted file mode 100644 index 9dfc392..0000000 --- a/src/main/java/com/groupdocs/ui/annotation/annotator/TextAnnotator.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.groupdocs.ui.annotation.annotator; - -import com.groupdocs.annotation.domain.*; -import com.groupdocs.ui.annotation.entity.web.AnnotationDataEntity; - -import java.text.ParseException; - -/** - * TextAnnotator - * Annotates documents with the text annotation - * - * @author Aspose Pty Ltd - */ -public class TextAnnotator extends AbstractSvgAnnotator { - - public TextAnnotator(AnnotationDataEntity annotationData, PageData pageData) { - super(annotationData, pageData); - } - - @Override - public AnnotationInfo annotateWord() throws ParseException { - // init possible types of annotations - AnnotationInfo textAnnotation = initAnnotationInfo(); - return textAnnotation; - } - - @Override - protected AnnotationInfo initAnnotationInfo() throws ParseException { - AnnotationInfo textAnnotation = super.initAnnotationInfo(); - textAnnotation.setGuid(String.valueOf(annotationData.getId())); - return textAnnotation; - } - - @Override - public AnnotationInfo annotatePdf() throws ParseException { - // init possible types of annotations - AnnotationInfo textAnnotation = initAnnotationInfo(); - return textAnnotation; - } - - @Override - public AnnotationInfo annotateCells() throws ParseException { - // init possible types of annotations - AnnotationInfo textAnnotation = super.initAnnotationInfo(); - textAnnotation.setPageNumber(annotationData.getPageNumber()); - textAnnotation.setAnnotationPosition(new Point(1, 1)); - textAnnotation.setBox(new Rectangle(0, 0, 0, 0)); - return textAnnotation; - } - - @Override - public AnnotationInfo annotateSlides() throws ParseException { - // init possible types of annotations - AnnotationInfo textAnnotation = initAnnotationInfo(); - textAnnotation.getBox().setX((float) (annotationData.getLeft() / 4)); - return textAnnotation; - } - - @Override - public AnnotationInfo annotateImage() throws ParseException { - return initAnnotationInfo(); - } - - @Override - public AnnotationInfo annotateDiagram() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); - } - - @Override - protected Rectangle getBox() { - return new Rectangle(annotationData.getLeft(), annotationData.getTop(), annotationData.getWidth(), annotationData.getHeight()); - } - - @Override - protected byte getType() { - return AnnotationType.Text; - } -} \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/annotator/TextFieldAnnotator.java b/src/main/java/com/groupdocs/ui/annotation/annotator/TextFieldAnnotator.java index d924cb6..2e62d73 100644 --- a/src/main/java/com/groupdocs/ui/annotation/annotator/TextFieldAnnotator.java +++ b/src/main/java/com/groupdocs/ui/annotation/annotator/TextFieldAnnotator.java @@ -1,70 +1,61 @@ package com.groupdocs.ui.annotation.annotator; -import com.groupdocs.annotation.domain.AnnotationInfo; -import com.groupdocs.annotation.domain.AnnotationType; -import com.groupdocs.annotation.domain.PageData; -import com.groupdocs.annotation.domain.Point; +import com.groupdocs.annotation.models.PageInfo; +import com.groupdocs.annotation.models.annotationmodels.AnnotationBase; +import com.groupdocs.annotation.models.annotationmodels.TextFieldAnnotation; +import com.groupdocs.annotation.options.export.AnnotationType; import com.groupdocs.ui.annotation.entity.web.AnnotationDataEntity; -import java.text.ParseException; -/** - * TextAnnotator - * Annotates documents with the text annotation - * - * @author Aspose Pty Ltd - */ -public class TextFieldAnnotator extends AbstractTextAnnotator { +public class TextFieldAnnotator extends BaseAnnotator { - public TextFieldAnnotator(AnnotationDataEntity annotationData, PageData pageData) { - super(annotationData, pageData); + private TextFieldAnnotation textFieldAnnotation; + + public TextFieldAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) { + super(annotationData, pageInfo); + + textFieldAnnotation = new TextFieldAnnotation(); + textFieldAnnotation.setBox(getBox()); + + textFieldAnnotation.setFontFamily(annotationData.getFont() != null || !"".equals(annotationData.getFont()) ? annotationData.getFont() : "Arial"); + textFieldAnnotation.setFontColor(annotationData.getFontColor()); + textFieldAnnotation.setFontSize(annotationData.getFontSize() == 0 ? 12 : annotationData.getFontSize()); + textFieldAnnotation.setText(annotationData.getText()); } @Override - public AnnotationInfo annotateWord() throws ParseException { - // init possible types of annotations - AnnotationInfo textFieldAnnotation = initAnnotationInfo(); + public AnnotationBase annotateWord() { + textFieldAnnotation = (TextFieldAnnotation) initAnnotationBase(textFieldAnnotation); return textFieldAnnotation; } @Override - public AnnotationInfo annotatePdf() throws ParseException { - // init possible types of annotations - // Text field annotation - AnnotationInfo textFieldAnnotation = initAnnotationInfo(); - textFieldAnnotation.setAnnotationPosition(new Point(annotationData.getLeft(), annotationData.getTop())); - textFieldAnnotation.setBackgroundColor(16777215); - return textFieldAnnotation; + public AnnotationBase annotatePdf() { + return annotateWord(); } @Override - public AnnotationInfo annotateCells() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); + public AnnotationBase annotateCells() { + return annotateWord(); } @Override - public AnnotationInfo annotateSlides() throws ParseException { - // init possible types of annotations - AnnotationInfo textFieldAnnotation = initAnnotationInfo(); - return textFieldAnnotation; + public AnnotationBase annotateSlides() { + return annotateWord(); } @Override - public AnnotationInfo annotateImage() throws ParseException { - // init possible types of annotations - AnnotationInfo textFieldAnnotation = initAnnotationInfo(); - return textFieldAnnotation; + public AnnotationBase annotateImage() { + return annotateWord(); } @Override - public AnnotationInfo annotateDiagram() throws ParseException { - // init possible types of annotations - AnnotationInfo textFieldAnnotation = initAnnotationInfo(); - return textFieldAnnotation; + public AnnotationBase annotateDiagram() { + return annotateWord(); } @Override - protected byte getType() { + protected int getType() { return AnnotationType.TextField; } } \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/annotator/TextHighlightAnnotator.java b/src/main/java/com/groupdocs/ui/annotation/annotator/TextHighlightAnnotator.java new file mode 100644 index 0000000..b701943 --- /dev/null +++ b/src/main/java/com/groupdocs/ui/annotation/annotator/TextHighlightAnnotator.java @@ -0,0 +1,57 @@ +package com.groupdocs.ui.annotation.annotator; + +import com.groupdocs.annotation.models.PageInfo; +import com.groupdocs.annotation.models.annotationmodels.AnnotationBase; +import com.groupdocs.annotation.models.annotationmodels.HighlightAnnotation; +import com.groupdocs.annotation.options.export.AnnotationType; +import com.groupdocs.ui.annotation.entity.web.AnnotationDataEntity; +import com.groupdocs.ui.exception.TotalGroupDocsException; + + +public class TextHighlightAnnotator extends AbstractTextAnnotator { + + private HighlightAnnotation highlightAnnotation; + + public TextHighlightAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) { + super(annotationData, pageInfo); + + highlightAnnotation = new HighlightAnnotation(); + highlightAnnotation.setPoints(getPoints(annotationData, pageInfo)); + } + + @Override + public AnnotationBase annotateWord() { + highlightAnnotation = (HighlightAnnotation) initAnnotationBase(highlightAnnotation); + return highlightAnnotation; + } + + @Override + public AnnotationBase annotatePdf() { + return annotateWord(); + } + + @Override + public AnnotationBase annotateCells() { + return annotateWord(); + } + + @Override + public AnnotationBase annotateSlides() { + return annotateWord(); + } + + @Override + public AnnotationBase annotateImage() { + return annotateWord(); + } + + @Override + public AnnotationBase annotateDiagram() { + throw new TotalGroupDocsException(Message + annotationData.getType()); + } + + @Override + protected int getType() { + return AnnotationType.TextHighlight; + } +} \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/annotator/TextRedactionAnnotator.java b/src/main/java/com/groupdocs/ui/annotation/annotator/TextRedactionAnnotator.java index bf47edc..ac4e8be 100644 --- a/src/main/java/com/groupdocs/ui/annotation/annotator/TextRedactionAnnotator.java +++ b/src/main/java/com/groupdocs/ui/annotation/annotator/TextRedactionAnnotator.java @@ -1,45 +1,51 @@ package com.groupdocs.ui.annotation.annotator; -import com.groupdocs.annotation.domain.AnnotationInfo; -import com.groupdocs.annotation.domain.AnnotationType; -import com.groupdocs.annotation.domain.PageData; -import com.groupdocs.annotation.domain.Rectangle; +import com.groupdocs.annotation.models.PageInfo; +import com.groupdocs.annotation.models.annotationmodels.AnnotationBase; +import com.groupdocs.annotation.models.annotationmodels.TextRedactionAnnotation; +import com.groupdocs.annotation.options.export.AnnotationType; import com.groupdocs.ui.annotation.entity.web.AnnotationDataEntity; +import com.groupdocs.ui.exception.TotalGroupDocsException; -/** - * TextAnnotator - * Annotates documents with the text annotation - * - * @author Aspose Pty Ltd - */ -public class TextRedactionAnnotator extends TextAnnotator { +public class TextRedactionAnnotator extends TextHighlightAnnotator { - public TextRedactionAnnotator(AnnotationDataEntity annotationData, PageData pageData) { - super(annotationData, pageData); + private TextRedactionAnnotation textRedactionAnnotation; + + public TextRedactionAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) { + super(annotationData, pageInfo); + + textRedactionAnnotation = new TextRedactionAnnotation(); + textRedactionAnnotation.setPoints(getPoints(annotationData, pageInfo)); + } + + @Override + public AnnotationBase annotateCells() { + return annotatePdf(); } @Override - public AnnotationInfo annotateCells() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); + public AnnotationBase annotateSlides() { + return annotatePdf(); } @Override - public AnnotationInfo annotateSlides() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); + public AnnotationBase annotateImage() { + throw new TotalGroupDocsException(Message + annotationData.getType()); } @Override - public AnnotationInfo annotateImage() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); + public AnnotationBase annotateDiagram() { + throw new TotalGroupDocsException(Message + annotationData.getType()); } @Override - public AnnotationInfo annotateDiagram() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); + public AnnotationBase annotatePdf() { + textRedactionAnnotation = (TextRedactionAnnotation) initAnnotationBase(textRedactionAnnotation); + return textRedactionAnnotation; } @Override - protected byte getType() { + protected int getType() { return AnnotationType.TextRedaction; } } \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/annotator/TextReplacementAnnotator.java b/src/main/java/com/groupdocs/ui/annotation/annotator/TextReplacementAnnotator.java index 4a9026e..9291466 100644 --- a/src/main/java/com/groupdocs/ui/annotation/annotator/TextReplacementAnnotator.java +++ b/src/main/java/com/groupdocs/ui/annotation/annotator/TextReplacementAnnotator.java @@ -1,84 +1,58 @@ package com.groupdocs.ui.annotation.annotator; -import com.groupdocs.annotation.domain.AnnotationInfo; -import com.groupdocs.annotation.domain.AnnotationType; -import com.groupdocs.annotation.domain.PageData; -import com.groupdocs.annotation.domain.Rectangle; +import com.groupdocs.annotation.models.PageInfo; +import com.groupdocs.annotation.models.annotationmodels.AnnotationBase; +import com.groupdocs.annotation.models.annotationmodels.ReplacementAnnotation; +import com.groupdocs.annotation.options.export.AnnotationType; import com.groupdocs.ui.annotation.entity.web.AnnotationDataEntity; +import com.groupdocs.ui.exception.TotalGroupDocsException; -import java.text.ParseException; -/** - * TextAnnotator - * Annotates documents with the text annotation - * - * @author Aspose Pty Ltd - */ -public class TextReplacementAnnotator extends AbstractSvgAnnotator { +public class TextReplacementAnnotator extends AbstractTextAnnotator { - public TextReplacementAnnotator(AnnotationDataEntity annotationData, PageData pageData) { - super(annotationData, pageData); - } + private ReplacementAnnotation replacementAnnotation; - @Override - public AnnotationInfo annotateWord() throws ParseException { - // init possible types of annotations - AnnotationInfo textReplacementAnnotation = initAnnotationInfo(); - return textReplacementAnnotation; - } + public TextReplacementAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) { + super(annotationData, pageInfo); - @Override - protected AnnotationInfo initAnnotationInfo() throws ParseException { - AnnotationInfo textReplacementAnnotation = super.initAnnotationInfo(); - textReplacementAnnotation.setGuid(String.valueOf(annotationData.getId())); - textReplacementAnnotation.setFieldText(annotationData.getText()); - return textReplacementAnnotation; - } - - @Override - protected String buildSvgPath() { - double topPosition = pageData.getHeight() - annotationData.getTop(); - double leftPosition = pageData.getWidth() - annotationData.getLeft(); - double topRightX = annotationData.getLeft() + annotationData.getWidth(); - double bottomRightY = topPosition - annotationData.getHeight(); - return super.getSvgString(topPosition, leftPosition, topRightX, bottomRightY); + replacementAnnotation = new ReplacementAnnotation(); + replacementAnnotation.setPoints(getPoints(annotationData, pageInfo)); + replacementAnnotation.setTextToReplace(annotationData.getText()); } @Override - public AnnotationInfo annotatePdf() throws ParseException { - // init possible types of annotations - AnnotationInfo textReplacementAnnotation = initAnnotationInfo(); - textReplacementAnnotation.setBox(new Rectangle(annotationData.getLeft(), annotationData.getTop(), annotationData.getWidth(), annotationData.getHeight())); - return textReplacementAnnotation; + public AnnotationBase annotateWord() { + replacementAnnotation = (ReplacementAnnotation) initAnnotationBase(replacementAnnotation); + return replacementAnnotation; } @Override - public AnnotationInfo annotateCells() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); + public AnnotationBase annotatePdf() { + return annotateWord(); } @Override - public AnnotationInfo annotateSlides() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); + public AnnotationBase annotateCells() { + return annotateWord(); } @Override - public AnnotationInfo annotateImage() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); + public AnnotationBase annotateSlides() { + return annotateWord(); } @Override - public AnnotationInfo annotateDiagram() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); + public AnnotationBase annotateImage() { + throw new TotalGroupDocsException(Message + annotationData.getType()); } @Override - protected Rectangle getBox() { - return new Rectangle(0, 0, 0, 0); + public AnnotationBase annotateDiagram() { + throw new TotalGroupDocsException(Message + annotationData.getType()); } @Override - protected byte getType() { + protected int getType() { return AnnotationType.TextReplacement; } } \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/annotator/TextStrikeoutAnnotator.java b/src/main/java/com/groupdocs/ui/annotation/annotator/TextStrikeoutAnnotator.java new file mode 100644 index 0000000..f5a6a5c --- /dev/null +++ b/src/main/java/com/groupdocs/ui/annotation/annotator/TextStrikeoutAnnotator.java @@ -0,0 +1,58 @@ +package com.groupdocs.ui.annotation.annotator; + +import com.groupdocs.annotation.models.PageInfo; +import com.groupdocs.annotation.models.annotationmodels.AnnotationBase; +import com.groupdocs.annotation.models.annotationmodels.StrikeoutAnnotation; +import com.groupdocs.annotation.options.export.AnnotationType; +import com.groupdocs.ui.annotation.entity.web.AnnotationDataEntity; +import com.groupdocs.ui.exception.TotalGroupDocsException; + +public class TextStrikeoutAnnotator extends AbstractTextAnnotator { + + private StrikeoutAnnotation strikeoutAnnotation; + + public TextStrikeoutAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) { + super(annotationData, pageInfo); + + strikeoutAnnotation = new StrikeoutAnnotation(); + strikeoutAnnotation.setPoints(getPoints(annotationData, pageInfo)); + } + + @Override + public AnnotationBase annotateWord() { + strikeoutAnnotation = (StrikeoutAnnotation) initAnnotationBase(strikeoutAnnotation); + return strikeoutAnnotation; + } + + @Override + public AnnotationBase annotatePdf() { + strikeoutAnnotation = (StrikeoutAnnotation) initAnnotationBase(strikeoutAnnotation); + this.strikeoutAnnotation.setFontColor(0); + return strikeoutAnnotation; + } + + @Override + public AnnotationBase annotateCells() { + return annotateWord(); + } + + @Override + public AnnotationBase annotateSlides() { + return annotateWord(); + } + + @Override + public AnnotationBase annotateImage() { + return annotateWord(); + } + + @Override + public AnnotationBase annotateDiagram() { + throw new TotalGroupDocsException(Message + annotationData.getType()); + } + + @Override + protected int getType() { + return AnnotationType.TextStrikeout; + } +} \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/annotator/TextUnderlineAnnotator.java b/src/main/java/com/groupdocs/ui/annotation/annotator/TextUnderlineAnnotator.java new file mode 100644 index 0000000..53956be --- /dev/null +++ b/src/main/java/com/groupdocs/ui/annotation/annotator/TextUnderlineAnnotator.java @@ -0,0 +1,60 @@ +package com.groupdocs.ui.annotation.annotator; + +import com.groupdocs.annotation.models.PageInfo; +import com.groupdocs.annotation.models.annotationmodels.AnnotationBase; +import com.groupdocs.annotation.models.annotationmodels.UnderlineAnnotation; +import com.groupdocs.annotation.options.export.AnnotationType; +import com.groupdocs.ui.annotation.entity.web.AnnotationDataEntity; +import com.groupdocs.ui.exception.TotalGroupDocsException; + + +public class TextUnderlineAnnotator extends AbstractTextAnnotator { + + private UnderlineAnnotation underlineAnnotation; + + public TextUnderlineAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) { + super(annotationData, pageInfo); + + underlineAnnotation = new UnderlineAnnotation(); + underlineAnnotation.setPoints(getPoints(annotationData, pageInfo)); + } + + @Override + public AnnotationBase annotateWord() { + underlineAnnotation = (UnderlineAnnotation) initAnnotationBase(underlineAnnotation); + underlineAnnotation.setFontColor(1201033); + return underlineAnnotation; + } + + @Override + public AnnotationBase annotatePdf() { + return annotateWord(); + } + + @Override + public AnnotationBase annotateCells() { + return annotateWord(); + } + + @Override + public AnnotationBase annotateSlides() { + underlineAnnotation = (UnderlineAnnotation) initAnnotationBase(underlineAnnotation); + underlineAnnotation.setFontColor(0); + return underlineAnnotation; + } + + @Override + public AnnotationBase annotateImage() { + return annotateWord(); + } + + @Override + public AnnotationBase annotateDiagram() { + throw new TotalGroupDocsException(Message + annotationData.getType()); + } + + @Override + protected int getType() { + return AnnotationType.TextUnderline; + } +} \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/annotator/WatermarkAnnotator.java b/src/main/java/com/groupdocs/ui/annotation/annotator/WatermarkAnnotator.java index 3e9cc11..3e8c06a 100644 --- a/src/main/java/com/groupdocs/ui/annotation/annotator/WatermarkAnnotator.java +++ b/src/main/java/com/groupdocs/ui/annotation/annotator/WatermarkAnnotator.java @@ -1,66 +1,60 @@ package com.groupdocs.ui.annotation.annotator; -import com.groupdocs.annotation.domain.AnnotationInfo; -import com.groupdocs.annotation.domain.AnnotationType; -import com.groupdocs.annotation.domain.PageData; -import com.groupdocs.annotation.domain.Point; +import com.groupdocs.annotation.models.PageInfo; +import com.groupdocs.annotation.models.annotationmodels.AnnotationBase; +import com.groupdocs.annotation.models.annotationmodels.WatermarkAnnotation; +import com.groupdocs.annotation.options.export.AnnotationType; import com.groupdocs.ui.annotation.entity.web.AnnotationDataEntity; +import com.groupdocs.ui.exception.TotalGroupDocsException; -import java.text.ParseException; +public class WatermarkAnnotator extends BaseAnnotator { -/** - * WatermarkAnnotator - * Annotates documents with the watermark annotation - * - * @author Aspose Pty Ltd - */ -public class WatermarkAnnotator extends AbstractTextAnnotator { + private WatermarkAnnotation watermarkAnnotation; - public WatermarkAnnotator(AnnotationDataEntity annotationData, PageData pageData) { - super(annotationData, pageData); + public WatermarkAnnotator(AnnotationDataEntity annotationData, PageInfo pageInfo) { + super(annotationData, pageInfo); + + watermarkAnnotation = new WatermarkAnnotation(); + watermarkAnnotation.setBox(getBox()); + watermarkAnnotation.setFontFamily(annotationData.getFont() != null || !"".equals(annotationData.getFont()) ? annotationData.getFont() : "Arial"); + watermarkAnnotation.setFontColor(annotationData.getFontColor()); + watermarkAnnotation.setFontSize(annotationData.getFontSize() == 0 ? 12 : annotationData.getFontSize()); + watermarkAnnotation.setText(annotationData.getText()); } @Override - public AnnotationInfo annotateWord() throws ParseException { - AnnotationInfo watermarkAnnotation = initAnnotationInfo(); - watermarkAnnotation.setAnnotationPosition(new Point(annotationData.getLeft(), annotationData.getTop())); + public AnnotationBase annotateWord() { + watermarkAnnotation = (WatermarkAnnotation) initAnnotationBase(watermarkAnnotation); return watermarkAnnotation; } @Override - public AnnotationInfo annotatePdf() throws ParseException { - // init possible types of annotations - AnnotationInfo watermarkAnnotation = initAnnotationInfo(); - watermarkAnnotation.setAnnotationPosition(new Point(annotationData.getLeft(), annotationData.getTop())); - return watermarkAnnotation; + public AnnotationBase annotatePdf() { + return annotateWord(); } @Override - public AnnotationInfo annotateCells() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); + public AnnotationBase annotateCells() { + return annotateWord(); } @Override - public AnnotationInfo annotateSlides() throws ParseException { - // init possible types of annotations - AnnotationInfo watermarkAnnotation = initAnnotationInfo(); - return watermarkAnnotation; + public AnnotationBase annotateSlides() { + return annotateWord(); } @Override - public AnnotationInfo annotateImage() throws ParseException { - // init possible types of annotations - AnnotationInfo watermarkAnnotation = initAnnotationInfo(); - return watermarkAnnotation; + public AnnotationBase annotateImage() { + return annotateWord(); } @Override - public AnnotationInfo annotateDiagram() { - throw new UnsupportedOperationException(String.format(MESSAGE, annotationData.getType())); + public AnnotationBase annotateDiagram() { + throw new TotalGroupDocsException(Message + annotationData.getType()); } @Override - protected byte getType() { + protected int getType() { return AnnotationType.Watermark; } } \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/config/AnnotationConfiguration.java b/src/main/java/com/groupdocs/ui/annotation/config/AnnotationConfiguration.java index 00eb1ef..73612cd 100644 --- a/src/main/java/com/groupdocs/ui/annotation/config/AnnotationConfiguration.java +++ b/src/main/java/com/groupdocs/ui/annotation/config/AnnotationConfiguration.java @@ -4,16 +4,14 @@ import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Component; import org.springframework.util.StringUtils; - import javax.annotation.PostConstruct; - import static com.groupdocs.ui.config.DefaultDirectories.defaultAnnotationDirectory; import static com.groupdocs.ui.config.DefaultDirectories.relativePathToAbsolute; /** + ** AnnotationConfiguration - * - * @author Aspose Pty Ltd + *
*/ @Component public class AnnotationConfiguration extends CommonConfiguration { @@ -256,29 +254,29 @@ public void setFitWidth(boolean fitWidth) { @Override public String toString() { - return super.toString() + - "AnnotationConfiguration{" + - "filesDirectory='" + filesDirectory + '\'' + - ", defaultDocument='" + defaultDocument + '\'' + - ", preloadPageCount=" + preloadPageCount + - ", fontsDirectory='" + fontsDirectory + '\'' + - ", textAnnotation=" + textAnnotation + - ", areaAnnotation=" + areaAnnotation + - ", pointAnnotation=" + pointAnnotation + - ", textStrikeoutAnnotation=" + textStrikeoutAnnotation + - ", polylineAnnotation=" + polylineAnnotation + - ", textFieldAnnotation=" + textFieldAnnotation + - ", watermarkAnnotation=" + watermarkAnnotation + - ", textReplacementAnnotation=" + textReplacementAnnotation + - ", arrowAnnotation=" + arrowAnnotation + - ", textRedactionAnnotation=" + textRedactionAnnotation + - ", resourcesRedactionAnnotation=" + resourcesRedactionAnnotation + - ", textUnderlineAnnotation=" + textUnderlineAnnotation + - ", distanceAnnotation=" + distanceAnnotation + - ", downloadOriginal=" + downloadOriginal + - ", downloadAnnotated=" + downloadAnnotated + - ", zoom=" + zoom + - ", fitWidth=" + fitWidth + - '}'; + return super.toString() + + "AnnotationConfiguration{" + + "filesDirectory='" + filesDirectory + '\'' + + ", defaultDocument='" + defaultDocument + '\'' + + ", preloadPageCount=" + preloadPageCount + + ", fontsDirectory='" + fontsDirectory + '\'' + + ", textAnnotation=" + textAnnotation + + ", areaAnnotation=" + areaAnnotation + + ", pointAnnotation=" + pointAnnotation + + ", textStrikeoutAnnotation=" + textStrikeoutAnnotation + + ", polylineAnnotation=" + polylineAnnotation + + ", textFieldAnnotation=" + textFieldAnnotation + + ", watermarkAnnotation=" + watermarkAnnotation + + ", textReplacementAnnotation=" + textReplacementAnnotation + + ", arrowAnnotation=" + arrowAnnotation + + ", textRedactionAnnotation=" + textRedactionAnnotation + + ", resourcesRedactionAnnotation=" + resourcesRedactionAnnotation + + ", textUnderlineAnnotation=" + textUnderlineAnnotation + + ", distanceAnnotation=" + distanceAnnotation + + ", downloadOriginal=" + downloadOriginal + + ", downloadAnnotated=" + downloadAnnotated + + ", zoom=" + zoom + + ", fitWidth=" + fitWidth + + '}'; } } \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/controller/AnnotationController.java b/src/main/java/com/groupdocs/ui/annotation/controller/AnnotationController.java index 0adc707..b997491 100644 --- a/src/main/java/com/groupdocs/ui/annotation/controller/AnnotationController.java +++ b/src/main/java/com/groupdocs/ui/annotation/controller/AnnotationController.java @@ -1,10 +1,10 @@ package com.groupdocs.ui.annotation.controller; import com.groupdocs.ui.annotation.config.AnnotationConfiguration; -import com.groupdocs.ui.annotation.entity.request.AnnotateDocumentRequest; import com.groupdocs.ui.annotation.entity.web.AnnotatedDocumentEntity; import com.groupdocs.ui.annotation.entity.web.AnnotationDataEntity; -import com.groupdocs.ui.annotation.entity.web.AnnotationPageDescriptionEntity; +import com.groupdocs.ui.annotation.entity.web.AnnotationPostedDataEntity; +import com.groupdocs.ui.annotation.entity.web.PageDataDescriptionEntity; import com.groupdocs.ui.annotation.service.AnnotationService; import com.groupdocs.ui.config.GlobalConfiguration; import com.groupdocs.ui.exception.TotalGroupDocsException; @@ -22,7 +22,6 @@ import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; - import javax.annotation.Nullable; import javax.servlet.ServletOutputStream; import javax.servlet.http.HttpServletRequest; @@ -32,7 +31,6 @@ import java.io.InputStream; import java.util.List; import java.util.Map; - import static com.groupdocs.ui.util.Utils.setLocalPort; import static com.groupdocs.ui.util.Utils.uploadFile; import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE; @@ -46,6 +44,7 @@ @Controller @RequestMapping(value = "/annotation") public class AnnotationController { + private static final Logger logger = LoggerFactory.getLogger(AnnotationController.class); @Autowired @@ -93,6 +92,7 @@ public List+ * DTO-class, representes document with its pages posted from the front-end. + *
+ */ +public class PostedDataEntity { + + /** + *+ * Absolute path to the posted document. + *
+ * @return + */ + public String getPath() { + return path; + } + + /** + *+ * Absolute path to the posted document. + *
+ * @param value + */ + public void setPath(String value) { + path = value; + } + private String path; + + /** + *+ * Absolute path to the document. + *
+ * @return + */ + public String getGuid() { + return guid; + } + + /** + *+ * Absolute path to the document. + *
+ * @param value + */ + public void setGuid(String value) { + guid = value; + } + private String guid; + + /** + *+ * Document password. + *
+ * @return + */ + public String getPassword() { + return password; + } + + /** + *+ * Document password. + *
+ * @param value + */ + public void setPassword(String value) { + password = value; + } + private String password; + + /** + *+ * Url of the posted file. + *
+ * @return + */ + public String getUrl() { + return url; + } + + /** + *+ * Url of the posted file. + *
+ * @param value + */ + public void setUrl(String value) { + url = value; + } + private String url; + + /** + *+ * Page number. + *
+ * @return + */ + public int getPage() { + return page; + } + + /** + *+ * Page number. + *
+ * @param value + */ + public void setPage(int value) { + page = value; + } + private int page; + + /** + *+ * Page rotation angle. + *
+ * @return + */ + public int getAngle() { + return angle; + } + + /** + *+ * Page rotation angle. + *
+ * @param value + */ + public void setAngle(int value) { + angle = value; + } + private int angle; + + /** + *+ * Collection of the document pages with their data. + *
+ * @return + */ + public List+ * Collection of the document pages with their data. + *
+ * @param value + */ + public void setPages(List+ * Flag indicating whether the file should be overwritten. + *
+ * @return + */ + public boolean getRewrite() { + return rewrite; + } + + /** + *+ * Flag indicating whether the file should be overwritten. + *
+ * @param value + */ + public void setRewrite(boolean value) { + rewrite = value; + } + private boolean rewrite; +} \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/entity/request/TextCoordinatesRequest.java b/src/main/java/com/groupdocs/ui/annotation/entity/request/TextCoordinatesRequest.java new file mode 100644 index 0000000..47122b0 --- /dev/null +++ b/src/main/java/com/groupdocs/ui/annotation/entity/request/TextCoordinatesRequest.java @@ -0,0 +1,31 @@ +package com.groupdocs.ui.annotation.entity.request; + +public class TextCoordinatesRequest extends PostedDataEntity { + + public final String getGuid_Rename_Namesake() { + return guid; + } + + public final void setQuid_Rename_Namesake(String value) { + guid = value; + } + private String guid; + + public final String getPassword_Rename_Namesake() { + return password; + } + + public final void setPassword_Rename_Namesake(String value) { + password = value; + } + private String password; + + public final int getPageNumber() { + return pageNumber; + } + + public final void setPageNumber(int value) { + pageNumber = value; + } + private int pageNumber; +} \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/entity/web/AnnotatedDocumentEntity.java b/src/main/java/com/groupdocs/ui/annotation/entity/web/AnnotatedDocumentEntity.java index f3cd1ba..8877196 100644 --- a/src/main/java/com/groupdocs/ui/annotation/entity/web/AnnotatedDocumentEntity.java +++ b/src/main/java/com/groupdocs/ui/annotation/entity/web/AnnotatedDocumentEntity.java @@ -1,13 +1,11 @@ package com.groupdocs.ui.annotation.entity.web; +import com.groupdocs.ui.model.response.PageDescriptionEntity; +import java.util.ArrayList; import java.util.List; -/** - * AnnotatedDocumentEntity - * - * @author Aspose Pty Ltd - */ -public class AnnotatedDocumentEntity { +public class AnnotatedDocumentEntity extends PageDescriptionEntity { + /** * Document Guid */ @@ -19,7 +17,7 @@ public class AnnotatedDocumentEntity { /** * list of pages */ - private List+ * SignaturePostedDataEntity + *
+ */ +public class AnnotationPostedDataEntity extends PostedDataEntity { + + public final String getDocumentType() { + return documentType; + } + + public final void setDocumentType(String value) { + documentType = value; + } + private String documentType; + + public final AnnotationDataEntity[] getAnnotationsData() { + return annotationsData; + } + + public final void setAnnotationsData(AnnotationDataEntity[] value) { + annotationsData = value; + } + private AnnotationDataEntity[] annotationsData; + + public final boolean getPrint() { + return print; + } + + public final void setPrint(boolean value) { + print = value; + } + private boolean print; +} \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/entity/web/CommentsEntity.java b/src/main/java/com/groupdocs/ui/annotation/entity/web/CommentsEntity.java index 30fd005..68d39b2 100644 --- a/src/main/java/com/groupdocs/ui/annotation/entity/web/CommentsEntity.java +++ b/src/main/java/com/groupdocs/ui/annotation/entity/web/CommentsEntity.java @@ -1,45 +1,31 @@ package com.groupdocs.ui.annotation.entity.web; -/** - * CommentsEntity - * - * @author Aspose Pty Ltd - */ public class CommentsEntity { - private Integer id; - private String time; - private String text; - private String userName; - - public Integer getId() { - return id; - } - public void setId(Integer id) { - this.id = id; - } - - public String getTime() { + public final String getTime() { return time; } - public void setTime(String time) { - this.time = time; + public final void setTime(String value) { + time = value; } + private String time; - public String getText() { + public final String getText() { return text; } - public void setText(String text) { - this.text = text; + public final void setText(String value) { + text = value; } + private String text; - public String getUserName() { + public final String getUserName() { return userName; } - public void setUserName(String userName) { - this.userName = userName; + public final void setUserName(String value) { + userName = value; } -} + private String userName; +} \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/entity/web/PageDataDescriptionEntity.java b/src/main/java/com/groupdocs/ui/annotation/entity/web/PageDataDescriptionEntity.java new file mode 100644 index 0000000..a975af8 --- /dev/null +++ b/src/main/java/com/groupdocs/ui/annotation/entity/web/PageDataDescriptionEntity.java @@ -0,0 +1,19 @@ +package com.groupdocs.ui.annotation.entity.web; + +import com.fasterxml.jackson.annotation.JsonProperty; +import com.groupdocs.ui.model.response.PageDescriptionEntity; +import java.util.List; + +public class PageDataDescriptionEntity extends PageDescriptionEntity { + + @JsonProperty + private List* Map AnnotationInfo instances into AnnotationDataEntity + *
* - * @param annotations list of AnnotationInfo instances - * @param pageNumber number of page for mapping - * @return list of AnnotationDataEntity instances + * @param pageInfo + * @return + * @param annotations AnnotationInfo[] + * @param pageNumber int */ - public AnnotationDataEntity[] mapForPage(AnnotationInfo[] annotations, int pageNumber) { + // AnnotationDataEntity[] => List* Map AnnotationInfo instances into AnnotationDataEntity + *
* - * @param annotationInfo AnnotationInfo instance - * @return AnnotationDataEntity instance + * @param pageInfo + * @return AnnotationDataEntity + * @param annotationInfo AnnotationInfo */ - public AnnotationDataEntity mapAnnotationDataEntity(AnnotationInfo annotationInfo) { + public static AnnotationDataEntity mapAnnotationDataEntity(AnnotationBase annotationInfo, PageInfo pageInfo) { + String annotationTypeName = AnnotationType.getName(annotationInfo.getType()); //getAnnotationType(annotationInfo.getType()); //Enum.GetName(Operators.typeOf(AnnotationType.class), annotationInfo.getType()); + float maxY = 0, minY = 0, maxX = 0, minX = 0; + float boxX = 0, boxY = 0, boxHeight = 0, boxWidth = 0; + String svgPath = ""; + //annotationTypeName (java.lang.String) "Watermark" + if (annotationInfo instanceof IPoints) { + List* Convert document type from string into int + *
* - * @param documentType string value of document type - * @return int doc type + * @return int + * @param documentType string */ - public static final int getDocumentType(String documentType) { + public static int getDocumentType(String documentType) { switch (documentType) { case "Portable Document Format": case "PDF": return DocumentType.Pdf; case "Microsoft Word": case "WORDS": + case "Microsoft Word Open XML format (.docx)": return DocumentType.Words; case "Microsoft PowerPoint": case "SLIDES": @@ -44,7 +42,7 @@ public static final int getDocumentType(String documentType) { return DocumentType.Undefined; } } - + /** * Check image and diagram document types * diff --git a/src/main/java/com/groupdocs/ui/annotation/util/PathConstants.java b/src/main/java/com/groupdocs/ui/annotation/util/PathConstants.java deleted file mode 100644 index 6f5cbf4..0000000 --- a/src/main/java/com/groupdocs/ui/annotation/util/PathConstants.java +++ /dev/null @@ -1,10 +0,0 @@ -package com.groupdocs.ui.annotation.util; - -import java.io.File; - -public class PathConstants { - /** - * Constant value for specifying output folder - */ - public static final String OUTPUT_FOLDER = File.separator + "Annotated"; -} diff --git a/src/main/java/com/groupdocs/ui/annotation/util/SupportedAnnotations.java b/src/main/java/com/groupdocs/ui/annotation/util/SupportedAnnotations.java index 104ba4c..d0af772 100644 --- a/src/main/java/com/groupdocs/ui/annotation/util/SupportedAnnotations.java +++ b/src/main/java/com/groupdocs/ui/annotation/util/SupportedAnnotations.java @@ -1,100 +1,31 @@ package com.groupdocs.ui.annotation.util; -/** - * The list of supported annotation types for each document type - */ +import com.groupdocs.annotation.entity.Annotations; + public class SupportedAnnotations { - public static String[] CELLS = { - "text" - }; - public static String[] DIAGRAM = { - "area", - "point", - "polyline", - "textField", - "arrow", - "textRedaction", - "resourcesRedaction", - "distance" - }; - public static String[] WORD = { - "point", - "textStrikeout", - "polyline", - "textField", - "watermark", - "textReplacement", - "arrow", - "textRedaction", - "resourcesRedaction", - "textUnderline", - "distance", - "text" - }; - public static String[] PDF = { - "area", - "point", - "textStrikeout", - "polyline", - "textField", - "watermark", - "textReplacement", - "arrow", - "textRedaction", - "resourcesRedaction", - "textUnderline", - "distance", - "text" - }; - public static String[] IMAGE = { - "area", - "point", - "textStrikeout", - "polyline", - "textField", - "watermark", - "arrow", - "textRedaction", - "resourcesRedaction", - "textUnderline", - "distance", - "text" - }; - public static String[] SLIDES = { - "area", - "point", - "textStrikeout", - "polyline", - "textField", - "watermark", - "arrow", - "textRedaction", - "resourcesRedaction", - "textUnderline", - "text" - }; - public static String[] getSupportedAnnotations(String documentType) { + public static final String[] getSupportedAnnotations(String documentType) { + Annotations annotations = new Annotations(); switch (documentType) { case "Portable Document Format": case "PDF": - return PDF; + return annotations.Pdf; case "Microsoft Word": case "WORDS": - return WORD; + return annotations.Word; case "Microsoft PowerPoint": case "SLIDES": - return SLIDES; + return annotations.Slides; case "image": - return IMAGE; + return annotations.Image; case "Microsoft Excel": case "CELLS": - return CELLS; + return annotations.Cells; case "AutoCAD Drawing File Format": case "diagram": - return DIAGRAM; + return annotations.Diagram; default: - return PDF; + return annotations.Pdf; } } -} +} \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/util/directory/DirectoryUtils.java b/src/main/java/com/groupdocs/ui/annotation/util/directory/DirectoryUtils.java new file mode 100644 index 0000000..9f65c7d --- /dev/null +++ b/src/main/java/com/groupdocs/ui/annotation/util/directory/DirectoryUtils.java @@ -0,0 +1,19 @@ +package com.groupdocs.ui.annotation.util.directory; + +import com.groupdocs.ui.annotation.config.AnnotationConfiguration; + +public class DirectoryUtils { + + public FilesDirectoryUtils FilesDirectory; + + /** + *+ * Constructor + *
+ * + * @param annotationConfiguration AnnotationConfiguration + */ + public DirectoryUtils(AnnotationConfiguration annotationConfiguration) { + FilesDirectory = new FilesDirectoryUtils(annotationConfiguration); + } +} \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/annotation/util/directory/FilesDirectoryUtils.java b/src/main/java/com/groupdocs/ui/annotation/util/directory/FilesDirectoryUtils.java new file mode 100644 index 0000000..970dde1 --- /dev/null +++ b/src/main/java/com/groupdocs/ui/annotation/util/directory/FilesDirectoryUtils.java @@ -0,0 +1,30 @@ +package com.groupdocs.ui.annotation.util.directory; + +import com.groupdocs.ui.annotation.config.AnnotationConfiguration; + +public class FilesDirectoryUtils { /*implements IDirectoryUtils { */ + + private final AnnotationConfiguration AnnotationConfiguration; + + /** + *+ * Constructor + *
+ * + * @param annotationConfiguration + */ + public FilesDirectoryUtils(AnnotationConfiguration annotationConfiguration) { + AnnotationConfiguration = annotationConfiguration; + } + + /** + *+ * Get path + *
+ * + * @return string + */ + public final String getPath() { + return AnnotationConfiguration.getFilesDirectory(); + } +} \ No newline at end of file diff --git a/src/main/java/com/groupdocs/ui/model/response/FileDescriptionEntity.java b/src/main/java/com/groupdocs/ui/model/response/FileDescriptionEntity.java index 1ca3d5a..cf53bb0 100644 --- a/src/main/java/com/groupdocs/ui/model/response/FileDescriptionEntity.java +++ b/src/main/java/com/groupdocs/ui/model/response/FileDescriptionEntity.java @@ -18,7 +18,7 @@ public class FileDescriptionEntity { * @return guid */ public String getGuid() { - return guid; + return guid.replace("\\", "//"); } /**