View Javadoc
1   /*
2    * dpkg - Debian Package library and the Debian Package Maven plugin
3    * (c) Copyright 2016 Gerrit Hohl
4    *
5    * This program is free software; you can redistribute it and/or
6    * modify it under the terms of the GNU General Public License
7    * as published by the Free Software Foundation; either version 2
8    * of the License, or (at your option) any later version.
9    *
10   * This program is distributed in the hope that it will be useful,
11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   * GNU General Public License for more details.
14   *
15   * You should have received a copy of the GNU General Public License
16   * along with this program; if not, write to the Free Software
17   * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
18   */
19  package net.sourceforge.javadpkg.control.impl;
20  
21  import net.sourceforge.javadpkg.Context;
22  import net.sourceforge.javadpkg.ParseException;
23  import net.sourceforge.javadpkg.control.PackageMaintainer;
24  import net.sourceforge.javadpkg.control.PackageMaintainerParser;
25  
26  
27  /**
28   * <p>
29   * A {@link PackageMaintainerParser} implementation.
30   * </p>
31   *
32   * @author Gerrit Hohl (gerrit-hohl@users.sourceforge.net)
33   * @version <b>1.0</b>, 03.01.2016 by Gerrit Hohl
34   */
35  public class PackageMaintainerParserImpl implements PackageMaintainerParser {
36  
37  
38  	/**
39  	 * <p>
40  	 * Creates a parser.
41  	 * </p>
42  	 */
43  	public PackageMaintainerParserImpl() {
44  		super();
45  	}
46  
47  
48  	@Override
49  	public PackageMaintainer parsePackageMaintainer(String value, Context context) throws ParseException {
50  		PackageMaintainer maintainer;
51  		String name, address;
52  		int indexStart;
53  		
54  		
55  		if (value == null)
56  			throw new IllegalArgumentException("Argument value is null.");
57  		if (context == null)
58  			throw new IllegalArgumentException("Argument context is null.");
59  			
60  		indexStart = value.indexOf('<');
61  		if (indexStart == -1)
62  			throw new ParseException(
63  					"Can't parse maintainer |" + value + "|: Couldn't find bracket |<| for the start of the e-mail address.");
64  		if (!value.endsWith(">"))
65  			throw new ParseException("Can't parse maintainer |" + value
66  					+ "|: Value doesn't end with bracket |>| for the end of the e-mail address.");
67  					
68  		name = value.substring(0, indexStart).trim();
69  		address = value.substring(indexStart + 1, value.length() - 1);
70  
71  		maintainer = new PackageMaintainerImpl(name, address);
72  		return maintainer;
73  	}
74  	
75  	
76  	/* **********************************************************************
77  	 * **********************************************************************
78  	 * **********************************************************************
79  	 * **********************************************************************
80  	 * **********************************************************************
81  	 */
82  	
83  	
84  	/**
85  	 * <p>
86  	 * The {@link PackageMaintainer} implementation of this class.
87  	 * </p>
88  	 *
89  	 * @author Gerrit Hohl (gerrit-hohl@users.sourceforge.net)
90  	 * @version <b>1.0</b>, 03.01.2016 by Gerrit Hohl
91  	 */
92  	private class PackageMaintainerImpl implements PackageMaintainer {
93  
94  
95  		/** The name. */
96  		private String	name;
97  		/** The address. */
98  		private String	address;
99  						
100 						
101 		/**
102 		 * <p>
103 		 * Creates a package maintainer.
104 		 * </p>
105 		 *
106 		 * @param name
107 		 *            The name.
108 		 * @param address
109 		 *            The address.
110 		 */
111 		public PackageMaintainerImpl(String name, String address) {
112 			super();
113 			
114 			this.name = name;
115 			this.address = address;
116 		}
117 		
118 		
119 		@Override
120 		public String getName() {
121 			return this.name;
122 		}
123 		
124 		
125 		@Override
126 		public String getAddress() {
127 			return this.address;
128 		}
129 		
130 		
131 	}
132 
133 
134 }