001/*
002 *  Copyright 2010 Anyware Services
003 *
004 *  Licensed under the Apache License, Version 2.0 (the "License");
005 *  you may not use this file except in compliance with the License.
006 *  You may obtain a copy of the License at
007 *
008 *      http://www.apache.org/licenses/LICENSE-2.0
009 *
010 *  Unless required by applicable law or agreed to in writing, software
011 *  distributed under the License is distributed on an "AS IS" BASIS,
012 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 *  See the License for the specific language governing permissions and
014 *  limitations under the License.
015 */
016package org.ametys.plugins.forms;
017
018import java.util.ArrayList;
019import java.util.Collection;
020import java.util.HashSet;
021import java.util.LinkedHashMap;
022import java.util.List;
023import java.util.Map;
024import java.util.Set;
025
026/**
027 * Class representing a form.
028 */
029public class Form
030{
031    /** The form id. */
032    protected String _id;
033    /** The form label. */
034    protected String _label;
035    /** The field which indicates the email to send an acknowledgement of receipt. */
036    protected String _receiptFieldId;
037    /** The email address of the sender. Can be empty to use default one. */
038    protected String _receiptFieldFromAddress;
039    /** The subject og the email. Cannot be empty */
040    protected String _receiptFieldSubject;
041    /** The body of the email. Cannot be empty */
042    protected String _receiptFieldBody;
043    /** The id of the page where to redirect to. Can be empty */
044    protected String _redirectTo;
045    /** The form emails. */
046    protected Set<String> _notificationEmails;
047    /** The limit of entries */
048    protected String _limit;
049    /** The message to display when they are remaining places */
050    protected String _remainingPlaces;
051    /** The message to display when they are no remaining places */
052    protected String _noRemainingPlaces;
053    
054    /** The form content ID. */
055//    protected String _contentId;
056    
057    /** The form fields. */
058    protected List<Field> _fields;
059    
060    /** The form fieldsets. */
061    protected List<Fieldset> _fieldsets;
062    
063    /** The name of the form's workflow */
064    protected String _workflowName;
065    
066    /** The content id */
067    protected String _contentId;
068
069    /**
070     * Default constructor.
071     */
072    public Form()
073    {
074        this("", "", "", "", "", "", new HashSet<String>(), "", new ArrayList<Field>(), new ArrayList<Fieldset>(), "", "", "", "", "");
075    }
076    
077    /**
078     * Constructor with parameters.
079     * @param id the form ID.
080     * @param label the form label.
081     * @param receiptFieldId the acknowledgement of receipt field ID.
082     * @param receiptFieldFromAddress The sender address for the receipt mail. Can be empty
083     * @param receiptFieldSubject The receipt mail subject
084     * @param receiptFieldBody The receipt mail body
085     * @param emails the form emails.
086     * @param contentId the form content ID.
087     * @param fields the form fields.
088     * @param fieldsets the form fieldsets.
089     * @param redirectTo the id of the page where to redirect to
090     * @param workflowName the name of the workflow
091     * @param limit the limit of entries
092     * @param remainingPlaces the remainingPlaces
093     * @param noRemainingPlaces the noRemainingPlaces
094     */
095    public Form(String id, String label, String receiptFieldId, String receiptFieldFromAddress, String receiptFieldSubject, String receiptFieldBody, Set<String> emails, String contentId, Collection<Field> fields, Collection<Fieldset> fieldsets, String redirectTo, String workflowName, String limit, String remainingPlaces, String noRemainingPlaces)
096    {
097        this._id = id;
098        this._label = label;
099        this._receiptFieldId = receiptFieldId;
100        this._receiptFieldFromAddress = receiptFieldFromAddress;
101        this._receiptFieldSubject = receiptFieldSubject;
102        this._receiptFieldBody = receiptFieldBody;
103        this._notificationEmails = emails;
104        this._contentId = contentId;
105        this._fields = new ArrayList<>(fields);
106        this._fieldsets = new ArrayList<>(fieldsets);
107        this._redirectTo = redirectTo;
108        this._workflowName = workflowName;
109        this._limit = limit;
110        this._remainingPlaces = remainingPlaces;
111        this._noRemainingPlaces = noRemainingPlaces;
112    }
113
114    /**
115     * Get the id.
116     * @return the id
117     */
118    public String getId()
119    {
120        return _id;
121    }
122
123    /**
124     * Set the id.
125     * @param id the id to set
126     */
127    public void setId(String id)
128    {
129        this._id = id;
130    }
131
132    /**
133     * Get the label.
134     * @return the label
135     */
136    public String getLabel()
137    {
138        return _label;
139    }
140
141    /**
142     * Set the label.
143     * @param label the label to set
144     */
145    public void setLabel(String label)
146    {
147        this._label = label;
148    }
149
150    /**
151     * Get the acknowledgement of receipt field ID.
152     * @return the acknowledgement of receipt field ID.
153     */
154    public String getReceiptFieldId()
155    {
156        return _receiptFieldId;
157    }
158    
159    /**
160     * Set the acknowledgement of receipt field ID.
161     * @param receiptFieldId the acknowledgement of receipt field ID.
162     */
163    public void setReceiptFieldId(String receiptFieldId)
164    {
165        this._receiptFieldId = receiptFieldId;
166    }
167    
168    /**
169     * Get the receiptFieldFromAddress
170     * @return the receiptFieldFromAddress
171     */
172    public String getReceiptFieldFromAddress()
173    {
174        return _receiptFieldFromAddress;
175    }
176    
177    /**
178     * Set the receiptFieldFromAddress
179     * @param receiptFieldFromAddress the receiptFieldFromAddress to set
180     */
181    public void setReceiptFieldFromAddress(String receiptFieldFromAddress)
182    {
183        _receiptFieldFromAddress = receiptFieldFromAddress;
184    }
185    
186    /**
187     * Get the receiptFieldBody
188     * @return the receiptFieldBody
189     */
190    public String getReceiptFieldBody()
191    {
192        return _receiptFieldBody;
193    }
194    
195    /**
196     * Set the receiptFieldBody
197     * @param receiptFieldBody the receiptFieldBody to set
198     */
199    public void setReceiptFieldBody(String receiptFieldBody)
200    {
201        _receiptFieldBody = receiptFieldBody;
202    }
203    
204    /**
205     * Get the receiptFieldSubject
206     * @return the receiptFieldSubject
207     */
208    public String getReceiptFieldSubject()
209    {
210        return _receiptFieldSubject;
211    }
212    
213    /**
214     * Set the receiptFieldSubject
215     * @param receiptFieldSubject the receiptFieldSubject to set
216     */
217    public void setReceiptFieldSubject(String receiptFieldSubject)
218    {
219        _receiptFieldSubject = receiptFieldSubject;
220    }
221    
222    /**
223     * Get the emails.
224     * @return the emails
225     */
226    public Set<String> getNotificationEmails()
227    {
228        return _notificationEmails;
229    }
230
231    /**
232     * Set the emails.
233     * @param emails the emails to set
234     */
235    public void setNotificationEmails(Set<String> emails)
236    {
237        this._notificationEmails = emails;
238    }
239    
240    /**
241     * Get the content ID.
242     * @return the content ID.
243     */
244    public String getContentId()
245    {
246        return _contentId;
247    }
248
249    /**
250     * Set the content ID.
251     * @param contentId the content ID to set.
252     */
253    public void setContentId(String contentId)
254    {
255        this._contentId = contentId;
256    }
257    
258    /**
259     * Get the fields.
260     * @return the fields
261     */
262    public List<Field> getFields()
263    {
264        return _fields;
265    }
266    
267    /**
268     * Set the fields.
269     * @param fields the fields to set
270     */
271    public void setFields(Collection<Field> fields)
272    {
273        _fields = new ArrayList<>(fields);
274    }
275    
276    /**
277     * Get a copy of the form's fields, indexed by its ID.
278     * @return a copy of the form's fields, indexed by its ID.
279     */
280    public Map<String, Field> getFieldMap()
281    {
282        Map<String, Field> fieldMap = new LinkedHashMap<>();
283        for (Field field : _fields)
284        {
285            fieldMap.put(field.getId(), field);
286        }
287        return fieldMap;
288    }
289    
290    /**
291     * Get the fieldsets.
292     * @return the fieldsets
293     */
294    public List<Fieldset> getFieldsets()
295    {
296        return _fieldsets;
297    }
298    
299    /**
300     * Set the fieldsets.
301     * @param fieldsets the fieldsets to set
302     */
303    public void setFieldsets(Collection<Fieldset> fieldsets)
304    {
305        this._fieldsets = new ArrayList<>(fieldsets);
306    }
307
308    /**
309     * the redirectTo
310     * @return the redirectTo
311     */
312    public String getRedirectTo()
313    {
314        return _redirectTo;
315    }
316    
317    /**
318     * the redirectTo
319     * @param redirectTo the redirectTo to set
320     */
321    public void setRedirectTo(String redirectTo)
322    {
323        _redirectTo = redirectTo;
324    }
325    
326    /**
327     * Retrieve the name of the workflow of this form's entries
328     * @return the name of the workflow used
329     */
330    public String getWorkflowName()
331    {
332        return _workflowName;
333    }
334
335    /**
336     * Set the name of the workflow of this form's entries
337     * @param workflowName the name of the workflow to use
338     */
339    public void setWorkflowName(String workflowName)
340    {
341        _workflowName = workflowName;
342    }
343
344    /**
345     * the limit of entries in the form
346     * @return the limit of entries
347     */
348    public String getLimit()
349    {
350        return _limit;
351    }
352
353    /**
354     * Set the limit of entries in the form
355     * @param limit the limit of entries
356     */
357    public void setLimit(String limit)
358    {
359        this._limit = limit;
360    }
361
362    /**
363     * Get the message to display when they are remaining places
364     * @return the remainingPlaces
365     */
366    public String getRemainingPlaces()
367    {
368        return _remainingPlaces;
369    }
370
371    /**
372     * Set the message to display when they are remaining places
373     * @param remainingPlaces the remainingPlaces to set
374     */
375    public void setRemainingPlaces(String remainingPlaces)
376    {
377        this._remainingPlaces = remainingPlaces;
378    }
379
380    /**
381     * Get the message to display when they are no remaining places
382     * @return the remainingPlaces
383     */
384    public String getNoRemainingPlaces()
385    {
386        return _noRemainingPlaces;
387    }
388
389    /**
390     * Set the message to display when they are no remaining places
391     * @param noRemainingPlaces the noRemainingPlaces to set
392     */
393    public void setNoRemainingPlaces(String noRemainingPlaces)
394    {
395        this._noRemainingPlaces = noRemainingPlaces;
396    }
397}