// Path: pigeon-common/src/main/java/com/trivago/mail/pigeon/bean/MailTemplate.java
// public class MailTemplate extends AbstractBean
// {
// 	public static final String ID = "template_id";
// 	public static final String SUBJECT = "subject";
// 	public static final String TEXT = "text_content";
// 	public static final String HTML = "html_content";
// 	public static final String TITLE = "title";
// 
// 
// 	public MailTemplate(final Node underlayingNode)
// 	{
// 		this.dataNode = underlayingNode;
// 	}
// 
// 	public MailTemplate(final long templateId)
// 	{
// 		dataNode = ConnectionFactory.getTemplateIndex().get(IndexTypes.TEMPLATE_ID, templateId).getSingle();
// 	}
// 
// 	public MailTemplate(final long templateId, final String title, final String text, final String html, final String subject)
// 	{
// 		Transaction tx = ConnectionFactory.getDatabase().beginTx();
// 		try
// 		{
// 			dataNode = ConnectionFactory.getDatabase().createNode();
// 			writeProperty(ID, templateId);
// 			writeProperty("type", getClass().getName());
// 			writeProperty(SUBJECT, subject);
// 			writeProperty(TEXT, text);
// 			writeProperty(HTML, html);
// 			writeProperty(TITLE, title);
// 			ConnectionFactory.getTemplateIndex().add(this.dataNode, IndexTypes.TEMPLATE_ID, templateId);
// 			ConnectionFactory.getTemplateIndex().add(this.dataNode, IndexTypes.TYPE, getClass().getName());
// 			ConnectionFactory.getDatabase().getReferenceNode().createRelationshipTo(dataNode, RelationTypes.MAIL_TEMPLATE_REFERENCE);
// 			tx.success();
// 		}
// 		catch (Exception e)
// 		{
// 			tx.failure();
// 		}
// 		finally
// 		{
// 			tx.finish();
// 		}
// 	}
// 
// 	public long getId()
// 	{
// 		return getProperty(Long.class, ID, false);
// 	}
// 
// 	public String getSubject()
// 	{
// 		return getProperty(String.class, SUBJECT);
// 	}
// 
// 	public void setSubject(final String subject)
// 	{
// 		writeProperty(SUBJECT, subject);
// 	}
// 
// 	public Node getDataNode()
// 	{
// 		return this.dataNode;
// 	}
// 
// 	public String getText()
// 	{
// 		return getProperty(String.class, TEXT);
// 	}
// 
// 	public void setText(final String text)
// 	{
// 		writeProperty(TEXT, text);
// 	}
// 
// 	public String getHtml()
// 	{
// 		return getProperty(String.class, HTML);
// 	}
// 
// 	public void setHtml(final String html)
// 	{
// 		writeProperty(HTML, html);
// 	}
// 
// 	public String getTitle()
// 	{
// 		return getProperty(String.class, TITLE);
// 	}
// 
// 	public void setTitle(final String title)
// 	{
// 		writeProperty(TITLE, title);
// 	}
// 
// 	public static IndexHits<Node> getAll()
// 	{
// 		return ConnectionFactory.getTemplateIndex().get(IndexTypes.TYPE, MailTemplate.class.getName());
// 	}
// }
// 
// Path: pigeon-common/src/main/java/com/trivago/mail/pigeon/storage/Util.java
// public abstract class Util
// {
// 	public static <T> List<T> indexHitsToList(Class<T> clazz, IndexHits<Node> hitList)
// 	{
// 		List<T> list = new ArrayList<T>();
// 		for (Node node : hitList)
// 		{
// 			T s = null;
// 			try
// 			{
// 				s = clazz.getConstructor(new Class[]{node.getClass()}).newInstance(node);
// 				list.add(s);
// 			}
// 			catch (InstantiationException e)
// 			{
// 				e.printStackTrace();
// 			}
// 			catch (IllegalAccessException e)
// 			{
// 				e.printStackTrace();
// 			}
// 			catch (InvocationTargetException e)
// 			{
// 				e.printStackTrace();
// 			}
// 			catch (NoSuchMethodException e)
// 			{
// 				e.printStackTrace();
// 			}
// 
// 		}
// 		return list;
// 	}
// 
// 	public static long generateId()
// 	{
// 		return Math.round(new Date().getTime() * Math.random());
// 	}
// }


import com.trivago.mail.pigeon.bean.MailTemplate;
import com.trivago.mail.pigeon.storage.Util;
import com.vaadin.data.util.BeanItem;
import com.vaadin.terminal.ExternalResource;
import com.vaadin.terminal.UserError;
import com.vaadin.ui.*;
import org.vaadin.openesignforms.ckeditor.CKEditorTextField;

				}
				else
				{
					subject.setComponentError(null);
				}

				if (htmlContent.getValue().equals(""))
				{
					htmlContent.setComponentError(new UserError("Please provide some HTML content"));
					hasError = true;
				}
				else
				{
					htmlContent.setComponentError(null);
				}

				if (textContent.getValue().equals(""))
				{
					textContent.setComponentError(new UserError("Please provide some text content"));
					hasError = true;
				}
				else
				{
					textContent.setComponentError(null);
				}

				if (!hasError)
				{
                    if (templateId == null)
                    {

// Path: pigeon-common/src/main/java/com/trivago/mail/pigeon/bean/MailTemplate.java
// public class MailTemplate extends AbstractBean
// {
// 	public static final String ID = "template_id";
// 	public static final String SUBJECT = "subject";
// 	public static final String TEXT = "text_content";
// 	public static final String HTML = "html_content";
// 	public static final String TITLE = "title";
// 
// 
// 	public MailTemplate(final Node underlayingNode)
// 	{
// 		this.dataNode = underlayingNode;
// 	}
// 
// 	public MailTemplate(final long templateId)
// 	{
// 		dataNode = ConnectionFactory.getTemplateIndex().get(IndexTypes.TEMPLATE_ID, templateId).getSingle();
// 	}
// 
// 	public MailTemplate(final long templateId, final String title, final String text, final String html, final String subject)
// 	{
// 		Transaction tx = ConnectionFactory.getDatabase().beginTx();
// 		try
// 		{
// 			dataNode = ConnectionFactory.getDatabase().createNode();
// 			writeProperty(ID, templateId);
// 			writeProperty("type", getClass().getName());
// 			writeProperty(SUBJECT, subject);
// 			writeProperty(TEXT, text);
// 			writeProperty(HTML, html);
// 			writeProperty(TITLE, title);
// 			ConnectionFactory.getTemplateIndex().add(this.dataNode, IndexTypes.TEMPLATE_ID, templateId);
// 			ConnectionFactory.getTemplateIndex().add(this.dataNode, IndexTypes.TYPE, getClass().getName());
// 			ConnectionFactory.getDatabase().getReferenceNode().createRelationshipTo(dataNode, RelationTypes.MAIL_TEMPLATE_REFERENCE);
// 			tx.success();
// 		}
// 		catch (Exception e)
// 		{
// 			tx.failure();
// 		}
// 		finally
// 		{
// 			tx.finish();
// 		}
// 	}
// 
// 	public long getId()
// 	{
// 		return getProperty(Long.class, ID, false);
// 	}
// 
// 	public String getSubject()
// 	{
// 		return getProperty(String.class, SUBJECT);
// 	}
// 
// 	public void setSubject(final String subject)
// 	{
// 		writeProperty(SUBJECT, subject);
// 	}
// 
// 	public Node getDataNode()
// 	{
// 		return this.dataNode;
// 	}
// 
// 	public String getText()
// 	{
// 		return getProperty(String.class, TEXT);
// 	}
// 
// 	public void setText(final String text)
// 	{
// 		writeProperty(TEXT, text);
// 	}
// 
// 	public String getHtml()
// 	{
// 		return getProperty(String.class, HTML);
// 	}
// 
// 	public void setHtml(final String html)
// 	{
// 		writeProperty(HTML, html);
// 	}
// 
// 	public String getTitle()
// 	{
// 		return getProperty(String.class, TITLE);
// 	}
// 
// 	public void setTitle(final String title)
// 	{
// 		writeProperty(TITLE, title);
// 	}
// 
// 	public static IndexHits<Node> getAll()
// 	{
// 		return ConnectionFactory.getTemplateIndex().get(IndexTypes.TYPE, MailTemplate.class.getName());
// 	}
// }
// 
// Path: pigeon-common/src/main/java/com/trivago/mail/pigeon/storage/Util.java
// public abstract class Util
// {
// 	public static <T> List<T> indexHitsToList(Class<T> clazz, IndexHits<Node> hitList)
// 	{
// 		List<T> list = new ArrayList<T>();
// 		for (Node node : hitList)
// 		{
// 			T s = null;
// 			try
// 			{
// 				s = clazz.getConstructor(new Class[]{node.getClass()}).newInstance(node);
// 				list.add(s);
// 			}
// 			catch (InstantiationException e)
// 			{
// 				e.printStackTrace();
// 			}
// 			catch (IllegalAccessException e)
// 			{
// 				e.printStackTrace();
// 			}
// 			catch (InvocationTargetException e)
// 			{
// 				e.printStackTrace();
// 			}
// 			catch (NoSuchMethodException e)
// 			{
// 				e.printStackTrace();
// 			}
// 
// 		}
// 		return list;
// 	}
// 
// 	public static long generateId()
// 	{
// 		return Math.round(new Date().getTime() * Math.random());
// 	}
// }


// Path: pigeon-web/src/main/java/com/trivago/mail/pigeon/web/components/templates/ModalAddTemplate.java
import com.trivago.mail.pigeon.bean.MailTemplate;
import com.trivago.mail.pigeon.storage.Util;
import com.vaadin.data.util.BeanItem;
import com.vaadin.terminal.ExternalResource;
import com.vaadin.terminal.UserError;
import com.vaadin.ui.*;
import org.vaadin.openesignforms.ckeditor.CKEditorTextField;

				}
				else
				{
					subject.setComponentError(null);
				}

				if (htmlContent.getValue().equals(""))
				{
					htmlContent.setComponentError(new UserError("Please provide some HTML content"));
					hasError = true;
				}
				else
				{
					htmlContent.setComponentError(null);
				}

				if (textContent.getValue().equals(""))
				{
					textContent.setComponentError(new UserError("Please provide some text content"));
					hasError = true;
				}
				else
				{
					textContent.setComponentError(null);
				}

				if (!hasError)
				{
                    if (templateId == null)
                    {

                        long templateId = Util.generateId();
