001 /**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements. See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License. You may obtain a copy of the License at
008 *
009 * http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017
018 package org.apache.geronimo.console.jmsmanager;
019
020 import javax.jms.Queue;
021
022 public class DestinationInfo implements Comparable {
023
024 private final String name;
025
026 private final String physicalName;
027
028 private final Class type;
029
030 private final String applicationName;
031
032 private final String moduleName;
033
034 private final String configURI;
035
036 public DestinationInfo(String name, String physicalName, Class type,
037 String applicationName, String moduleName, String configURI) {
038 this.name = name;
039 this.physicalName = physicalName;
040 this.type = type;
041 this.applicationName = applicationName;
042 this.moduleName = moduleName;
043 this.configURI = configURI;
044 }
045
046 public String getName() {
047 return name;
048 }
049
050 public String getPhysicalName() {
051 return physicalName;
052 }
053
054 public Class getType() {
055 return type;
056 }
057
058 public String getApplicationName() {
059 return applicationName;
060 }
061
062 public String getModuleName() {
063 return moduleName;
064 }
065
066 public String getConfigURI() {
067 return configURI;
068 }
069
070 /**
071 * Determines if the destination that this objects represents is viewable
072 * from the console this means that either the destination that this object
073 * represents was added via the Geronimo JMS Console or it is a Queue.
074 *
075 * @return true if the console knows how to display this Destination
076 * otherwise returns false.
077 */
078 public boolean isViewable() {
079 return Queue.class.isAssignableFrom(type) || isConsoleManaged();
080 }
081
082 /**
083 * Determines if the destination that this objects represents is removable
084 * from the console this means that the destination that this object
085 * represents was added via the Geronimo JMS Console.
086 *
087 * @return true if the console knows how to remove this Destination
088 * otherwise returns false.
089 */
090 public boolean isRemovable() {
091 return isConsoleManaged();
092 }
093
094 /**
095 * Determines if the destination that this objects represents was added via
096 * the console.
097 *
098 * @return true if the destination that this objects represents was added
099 * via the console otherwise returns false.
100 */
101 private boolean isConsoleManaged() {
102 return configURI.indexOf(AbstractJMSManager.BASE_CONFIG_URI + name) > -1;
103 }
104
105 public int compareTo(Object o) {
106 if (o instanceof DestinationInfo) {
107 DestinationInfo rhs = (DestinationInfo) o;
108 // If one of the objects is removable and the other is not, the
109 // removable one is less (comes first in a descending sort).
110 if (rhs.isRemovable() != this.isRemovable()) {
111 if (this.isRemovable()) {
112 return -1;
113 } else {
114 return 1;
115 }
116 // If one of the objects is viewable and the other is not the
117 // viewable one is less (comes first in a descending sort).
118 } else if (rhs.isViewable() != this.isViewable()) {
119 if (this.isViewable()) {
120 return -1;
121 } else {
122 return 1;
123 }
124 // Sort by name if all else fails.
125 } else {
126 return this.name.compareTo(rhs.getName());
127 }
128 }
129 return 1;
130 }
131
132 }