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.PackageName; 24 import net.sourceforge.javadpkg.control.PackageNameParser; 25 26 27 /** 28 * <p> 29 * A {@link PackageNameParser} implementation. 30 * </p> 31 * 32 * @author Gerrit Hohl (gerrit-hohl@users.sourceforge.net) 33 * @version <b>1.0</b>, 01.01.2016 by Gerrit Hohl 34 */ 35 public class PackageNameParserImpl implements PackageNameParser { 36 37 38 /** 39 * <p> 40 * Creates a parser. 41 * </p> 42 */ 43 public PackageNameParserImpl() { 44 super(); 45 } 46 47 48 @Override 49 public PackageName parsePackageName(String value, Context context) throws ParseException { 50 PackageName packageName; 51 52 53 if (value == null) 54 throw new IllegalArgumentException("Argument value is null."); 55 if (context == null) 56 throw new IllegalArgumentException("Argument context is null."); 57 58 // TODO How should be handle names like "python3:any"? 59 if (!value.matches("[a-z]{1}[a-z0-9+-.:]+")) 60 throw new ParseException("Package name |" + value + "| doesn't match the rules for package names."); 61 62 packageName = new PackageNameImpl(value); 63 return packageName; 64 } 65 66 67 /* ********************************************************************** 68 * ********************************************************************** 69 * ********************************************************************** 70 * ********************************************************************** 71 * ********************************************************************** 72 */ 73 74 75 /** 76 * <p> 77 * The {@link PackageName} implementation of this class. 78 * </p> 79 * 80 * @author Gerrit Hohl (gerrit-hohl@users.sourceforge.net) 81 * @version <b>1.0</b>, 01.01.2016 by Gerrit Hohl 82 */ 83 private class PackageNameImpl implements PackageName { 84 85 86 /** The name. */ 87 private String name; 88 89 90 /** 91 * <p> 92 * Creates a package name. 93 * </p> 94 * 95 * @param name 96 * The name. 97 */ 98 public PackageNameImpl(String name) { 99 super(); 100 101 this.name = name; 102 } 103 104 105 @Override 106 public String getName() { 107 return this.name; 108 } 109 110 111 } 112 113 114 }