1 /* 2 * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * This code is free software; you can redistribute it and/or modify it 6 * under the terms of the GNU General Public License version 2 only, as 7 * published by the Free Software Foundation. Oracle designates this 8 * particular file as subject to the "Classpath" exception as provided 9 * by Oracle in the LICENSE file that accompanied this code. 10 * 11 * This code is distributed in the hope that it will be useful, but WITHOUT 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 14 * version 2 for more details (a copy is included in the LICENSE file that 15 * accompanied this code). 16 * 17 * You should have received a copy of the GNU General Public License version 18 * 2 along with this work; if not, write to the Free Software Foundation, 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 20 * 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 22 * or visit www.oracle.com if you need additional information or have any 23 * questions. 24 */ 25 /* 26 * Copyright (C) 2004-2015 27 * 28 * Permission is hereby granted, free of charge, to any person obtaining a copy 29 * of this software and associated documentation files (the "Software"), to deal 30 * in the Software without restriction, including without limitation the rights 31 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 32 * copies of the Software, and to permit persons to whom the Software is 33 * furnished to do so, subject to the following conditions: 34 * 35 * The above copyright notice and this permission notice shall be included in 36 * all copies or substantial portions of the Software. 37 * 38 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 39 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 40 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 41 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 42 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 43 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 44 * THE SOFTWARE. 45 */ 46 package com.sun.xml.internal.rngom.digested; 47 48 import com.sun.xml.internal.rngom.ast.om.Location; 49 import com.sun.xml.internal.rngom.parse.Context; 50 51 import java.util.ArrayList; 52 import java.util.List; 53 54 /** 55 * @author Kohsuke Kawaguchi (kk@kohsuke.org) 56 */ 57 public class DDataPattern extends DPattern { 58 DPattern except; 59 60 String datatypeLibrary; 61 String type; 62 63 final List<Param> params = new ArrayList<Param>(); 64 65 /** 66 * Parameter to a data pattern. 67 */ 68 public final class Param { 69 String name; 70 String value; 71 Context context; 72 String ns; 73 Location loc; 74 Annotation anno; 75 76 public Param(String name, String value, Context context, String ns, Location loc, Annotation anno) { 77 this.name = name; 78 this.value = value; 79 this.context = context; 80 this.ns = ns; 81 this.loc = loc; 82 this.anno = anno; 83 } 84 85 public String getName() { 86 return name; 87 } 88 89 public String getValue() { 90 return value; 91 } 92 93 public Context getContext() { 94 return context; 95 } 96 97 public String getNs() { 98 return ns; 99 } 100 101 public Location getLoc() { 102 return loc; 103 } 104 105 public Annotation getAnno() { 106 return anno; 107 } 108 } 109 110 /** 111 * Gets the datatype library URI. 112 * 113 * @return 114 * Can be empty (which represents the built-in datatypes), but never null. 115 */ 116 public String getDatatypeLibrary() { 117 return datatypeLibrary; 118 } 119 120 /** 121 * Gets the datatype name, such as "int" or "token". 122 * 123 * @return 124 * never null. 125 */ 126 public String getType() { 127 return type; 128 } 129 130 /** 131 * Gets the parameters of this <data pattern. 132 * 133 * @return 134 * can be empty but never null. 135 */ 136 public List<Param> getParams() { 137 return params; 138 } 139 140 /** 141 * Gets the pattern that reprsents the {@code <except>} child of this data pattern. 142 * 143 * @return null if not exist. 144 */ 145 public DPattern getExcept() { 146 return except; 147 } 148 149 public boolean isNullable() { 150 return false; 151 } 152 153 public Object accept( DPatternVisitor visitor ) { 154 return visitor.onData(this); 155 } 156 }