ModelSharingMessageBuilder.java
/*
* The coLAB project
* Copyright (C) 2022-2023 AlbaSim, MEI, HEIG-VD, HES-SO
*
* Licensed under the MIT License
*/
package ch.colabproject.colab.api.model.token.tools;
import ch.colabproject.colab.api.controller.token.TokenMessageBuilder;
import ch.colabproject.colab.api.model.token.ModelSharingToken;
import java.text.MessageFormat;
/**
* To build the body of the message to send for an model sharing token.
*
* @author sandra
*/
public class ModelSharingMessageBuilder {
// TODO
/** Title */
private static final String MESSAGE_HEAD_TITLE = "Co.LAB model sharing";
/** Picture */
private static final String MESSAGE_PICTURE = "<svg\n"
+ " width=\"230\"\n"
+ " height=\"230\"\n"
+ " id=\"Layer_1\"\n"
+ " xmlns=\"http://www.w3.org/2000/svg\"\n"
+ " viewBox=\"0 0 384.66 396.62\"\n"
+ " >\n"
+ " <path\n"
+ " fill=\"#50BFD5\"\n"
+ " d=\"M384.7,192.3c0,106.2-86.1,192.3-192.3,192.3S0,298.6,0,192.3S86.1,0,192.3,0S384.7,86.1,384.7,192.3\n"
+ " L384.7,192.3z\"\n"
+ " />\n"
+ " <g>\n"
+ " <path\n"
+ " fill=\"#F1F2F2\"\n"
+ " d=\"M83,55.5h222.2c1.7,0,3,1.6,3,3.6v263c0,2-1.3,3.6-3,3.6H83c-1.7,0-3-1.6-3-3.6v-263\n"
+ " C80,57.1,81.3,55.5,83,55.5L83,55.5z\"\n"
+ " />\n"
+ " <rect\n"
+ " x=\"106.4\"\n"
+ " y=\"78.6\"\n"
+ " fill=\"#D1B511\"\n"
+ " width=\"113.7\"\n"
+ " height=\"57\"\n"
+ " />\n"
+ " <rect\n"
+ " x=\"230.5\"\n"
+ " y=\"183.7\"\n"
+ " fill=\"#D1B511\"\n"
+ " width=\"51.3\"\n"
+ " height=\"57\"\n"
+ " />\n"
+ " <rect\n"
+ " x=\"106.4\"\n"
+ " y=\"145.5\"\n"
+ " fill=\"#D1B511\"\n"
+ " width=\"113.7\"\n"
+ " height=\"96.1\"\n"
+ " />\n"
+ " <rect\n"
+ " x=\"229.8\"\n"
+ " y=\"76.5\"\n"
+ " fill=\"#D1B511\"\n"
+ " width=\"51.3\"\n"
+ " height=\"96.1\"\n"
+ " />\n"
+ " <rect\n"
+ " x=\"106.4\"\n"
+ " y=\"251.9\"\n"
+ " fill=\"#D1B511\"\n"
+ " width=\"174.7\"\n"
+ " height=\"54.5\"\n"
+ " />\n"
+ " <rect\n"
+ " x=\"118.2\"\n"
+ " y=\"91.5\"\n"
+ " fill=\"#FFE20F\"\n"
+ " width=\"39.3\"\n"
+ " height=\"33\"\n"
+ " />\n"
+ " <rect\n"
+ " x=\"168.3\"\n"
+ " y=\"91.5\"\n"
+ " fill=\"#FFE20F\"\n"
+ " width=\"38.8\"\n"
+ " height=\"33\"\n"
+ " />\n"
+ " <rect x=\"239.6\" y=\"195.7\" fill=\"#FFE20F\" width=\"33\" height=\"33\" />\n"
+ " <rect\n"
+ " x=\"118.5\"\n"
+ " y=\"262.6\"\n"
+ " fill=\"#FFE20F\"\n"
+ " width=\"38.8\"\n"
+ " height=\"33\"\n"
+ " />\n"
+ " </g>\n"
+ " <g>\n"
+ " <circle fill=\"#E05D11\" cx=\"304.8\" cy=\"305.3\" r=\"79.4\" />\n"
+ " <circle fill=\"#FFFFFF\" cx=\"329.1\" cy=\"271.6\" r=\"16.9\" />\n"
+ " <circle fill=\"#FFFFFF\" cx=\"270.1\" cy=\"305.5\" r=\"16.9\" />\n"
+ " <circle fill=\"#FFFFFF\" cx=\"329.1\" cy=\"340.2\" r=\"16.9\" />\n"
+ " <rect\n"
+ " x=\"297.9\"\n"
+ " y=\"251.9\"\n"
+ " transform=\"matrix(0.5 0.866 -0.866 0.5 400.3593 -116.5156)\"\n"
+ " fill=\"#FFFFFF\"\n"
+ " width=\"6.5\"\n"
+ " height=\"73\"\n"
+ " />\n"
+ " <rect\n"
+ " x=\"298.6\"\n"
+ " y=\"286.9\"\n"
+ " transform=\"matrix(-0.5 0.866 -0.866 -0.5 732.8752 223.7727)\"\n"
+ " fill=\"#FFFFFF\"\n"
+ " width=\"6.5\"\n"
+ " height=\"73\"\n"
+ " />\n"
+ " </g>\n"
+ " </svg>";
/** Header 1 */
private static final String MESSAGE_HEADING = "Hi ! You have been shared a project model.";
/** Header 2 */
private static final String MESSAGE_SUBHEADING = "{0} invites you to use {1}.";
/** Information */
private static final String MESSAGE_INFO = "<p>Click on the link below to start colabbing with the model.</p>";
/** Label of the link */
private static final String MESSAGE_LINK_LABEL = "Get the model";
private ModelSharingMessageBuilder() {
// private constructor
}
/**
* Build a HTML body to send a message for the model sharing token
*
* @param token the model sharing token
* @param link the link in order to consume the token
*
* @return the HTML body of the message to send
*/
public static String build(ModelSharingToken token, String link) {
String subHeading = MessageFormat.format(MESSAGE_SUBHEADING,
token.getSender() != null
? token.getSender()
: "Someone",
token.getProject() != null
? "the model <i>" + token.getProject().getName() + "</i>"
: "a co.LAB model");
return new TokenMessageBuilder(token)
.headTitle(MESSAGE_HEAD_TITLE)
.picture(MESSAGE_PICTURE)
.heading(MESSAGE_HEADING)
.subheading(subHeading)
.info(MESSAGE_INFO)
.linkHref(link)
.linkLabel(MESSAGE_LINK_LABEL)
// let default footer
.build();
}
}