1 package org.cacert.gigi.output;
3 import java.io.PrintWriter;
6 import javax.servlet.http.HttpServletRequest;
8 import org.cacert.gigi.GigiApiException;
9 import org.cacert.gigi.dbObjects.Name;
10 import org.cacert.gigi.dbObjects.NamePart;
11 import org.cacert.gigi.dbObjects.NamePart.NamePartType;
12 import org.cacert.gigi.dbObjects.User;
13 import org.cacert.gigi.localisation.Language;
14 import org.cacert.gigi.output.template.Outputable;
15 import org.cacert.gigi.output.template.Template;
17 public class NameInput implements Outputable {
19 private static final Template t = new Template(NameInput.class.getResource("NameInput.templ"));
21 private String fname = "";
23 private String lname = "";
25 private String suffix = "";
27 private String name = "";
31 public void update(HttpServletRequest req) throws GigiApiException {
32 fname = req.getParameter("fname");
33 lname = req.getParameter("lname");
34 suffix = req.getParameter("suffix");
35 name = req.getParameter("name");
48 if (name != null && name.contains(" ")) {
49 throw new GigiApiException("Single names may only have one part.");
55 public void output(PrintWriter out, Language l, Map<String, Object> vars) {
56 vars.put("fname", fname);
57 vars.put("lname", lname);
58 vars.put("suffix", suffix);
59 vars.put("name", name);
60 t.output(out, l, vars);
63 public void createName(User u) throws GigiApiException {
64 new Name(u, getNameParts());
67 public NamePart[] getNameParts() throws GigiApiException {
68 if (name != null && !name.isEmpty()) {
69 return new NamePart[] {
70 new NamePart(NamePartType.SINGLE_NAME, name)
73 String[] fparts = split(fname);
74 String[] lparts = split(lname);
75 String[] suff = split(suffix);
76 if (fparts.length == 0 || fparts[0].equals("") || lparts.length == 0 || lparts[0].equals("")) {
77 throw new GigiApiException("requires at least one first and one last name");
79 NamePart[] np = new NamePart[fparts.length + lparts.length + suff.length];
81 for (int i = 0; i < fparts.length; i++) {
82 np[p++] = new NamePart(NamePartType.FIRST_NAME, fparts[i]);
84 for (int i = 0; i < lparts.length; i++) {
85 np[p++] = new NamePart(NamePartType.LAST_NAME, lparts[i]);
87 for (int i = 0; i < suff.length; i++) {
88 np[p++] = new NamePart(NamePartType.SUFFIX, suff[i]);
94 private String[] split(String toSplit) {
95 if (toSplit == null || toSplit.trim().isEmpty()) {
98 return toSplit.split(" ");
101 public String[] getNamePartsPlain() throws GigiApiException {
102 NamePart[] p = getNameParts();
103 String[] s = new String[p.length];
104 for (int i = 0; i < s.length; i++) {
105 s[i] = p[i].getValue();