1 /* 2 * Copyright (c) 2012, 2014, Oracle and/or its affiliates. 3 * All rights reserved. Use is subject to license terms. 4 * 5 * This file is available and licensed under the following license: 6 * 7 * Redistribution and use in source and binary forms, with or without 8 * modification, are permitted provided that the following conditions 9 * are met: 10 * 11 * - Redistributions of source code must retain the above copyright 12 * notice, this list of conditions and the following disclaimer. 13 * - Redistributions in binary form must reproduce the above copyright 14 * notice, this list of conditions and the following disclaimer in 15 * the documentation and/or other materials provided with the distribution. 16 * - Neither the name of Oracle Corporation nor the names of its 17 * contributors may be used to endorse or promote products derived 18 * from this software without specific prior written permission. 19 * 20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 24 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 25 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 26 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 27 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 28 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 29 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 30 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 31 */ 32 package com.oracle.javafx.scenebuilder.kit.fxom.glue; 33 34 import java.util.Objects; 35 36 /** 37 * 38 * 39 */ 40 class QualifiedName implements Comparable<QualifiedName> { 41 42 private final String qualifier; 43 private final String name; 44 45 public QualifiedName(String qualifier, String name) { 46 assert name != null; 47 this.qualifier = qualifier; 48 this.name = name; 49 } 50 51 public QualifiedName(String qualifiedName) { 52 final int dotIndex = qualifiedName.indexOf('.'); 53 if (dotIndex == -1) { 54 this.qualifier = null; 55 this.name = qualifiedName; 56 } else { 57 this.qualifier = qualifiedName.substring(0, dotIndex); 58 this.name = qualifiedName.substring(dotIndex+1); 59 } 60 } 61 62 public String getQualifier() { 63 return qualifier; 64 } 65 66 public String getName() { 67 return name; 68 } 69 70 /* 71 * Object 72 */ 73 74 @Override 75 public int hashCode() { 76 int hash = 7; 77 hash = 71 * hash + Objects.hashCode(this.qualifier); 78 hash = 71 * hash + Objects.hashCode(this.name); 79 return hash; 80 } 81 82 @Override 83 public boolean equals(Object obj) { 84 if (obj == null) { 85 return false; 86 } 87 if (getClass() != obj.getClass()) { 88 return false; 89 } 90 final QualifiedName other = (QualifiedName) obj; 91 if (!Objects.equals(this.qualifier, other.qualifier)) { 92 return false; 93 } 94 if (!Objects.equals(this.name, other.name)) { 95 return false; 96 } 97 return true; 98 } 99 100 /* 101 * Comparable 102 */ 103 104 @Override 105 public int compareTo(QualifiedName o) { 106 int result; 107 108 if (this == o) { 109 result = 0; 110 } else if (o == null) { 111 result = -1; 112 } else { 113 if ((this.qualifier == null) && (o.qualifier == null)) { 114 result = 0; 115 } else if (this.qualifier == null) { 116 result = -1; 117 } else if (o.qualifier == null) { 118 result = +1; 119 } else { 120 result = this.qualifier.compareTo(o.qualifier); 121 } 122 if (result == 0) { 123 assert this.name != null; 124 assert o.name != null; 125 result = this.name.compareTo(o.name); 126 } 127 } 128 129 return result; 130 } 131 132 133 }