1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski package basicrunner.basichelper; 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim Jagielski import com.sun.star.lang.XInitialization; 26*b1cdbd2cSJim Jagielski import com.sun.star.lang.XSingleServiceFactory; 27*b1cdbd2cSJim Jagielski import com.sun.star.lang.XServiceInfo; 28*b1cdbd2cSJim Jagielski import com.sun.star.uno.Type; 29*b1cdbd2cSJim Jagielski import com.sun.star.lang.XTypeProvider; 30*b1cdbd2cSJim Jagielski import util.XMLTools; 31*b1cdbd2cSJim Jagielski 32*b1cdbd2cSJim Jagielski /** 33*b1cdbd2cSJim Jagielski * The class provides an implementation of the service 34*b1cdbd2cSJim Jagielski * <code>com.sun.star.xml.sax.XAttributeList</code>. 35*b1cdbd2cSJim Jagielski * @see com.sun.star.xml.sax.XAttributeList 36*b1cdbd2cSJim Jagielski * @see com.sun.star.lang.XServiceInfo 37*b1cdbd2cSJim Jagielski * @see com.sun.star.lang.XSingleServiceFactory 38*b1cdbd2cSJim Jagielski */ 39*b1cdbd2cSJim Jagielski public class AttributeList implements XServiceInfo, XSingleServiceFactory { 40*b1cdbd2cSJim Jagielski /** The service name of this class **/ 41*b1cdbd2cSJim Jagielski static final String __serviceName = "basichelper.AttributeList"; 42*b1cdbd2cSJim Jagielski 43*b1cdbd2cSJim Jagielski /** 44*b1cdbd2cSJim Jagielski * Returns True, of the service is supported. 45*b1cdbd2cSJim Jagielski * @param name The service name. 46*b1cdbd2cSJim Jagielski * @return True, if the service is supported. 47*b1cdbd2cSJim Jagielski */ supportsService(String name)48*b1cdbd2cSJim Jagielski public boolean supportsService(String name) { 49*b1cdbd2cSJim Jagielski return __serviceName.equals(name); 50*b1cdbd2cSJim Jagielski } 51*b1cdbd2cSJim Jagielski 52*b1cdbd2cSJim Jagielski /** 53*b1cdbd2cSJim Jagielski * Get all supported services. 54*b1cdbd2cSJim Jagielski * @return The supported services. 55*b1cdbd2cSJim Jagielski */ getSupportedServiceNames()56*b1cdbd2cSJim Jagielski public String[] getSupportedServiceNames() { 57*b1cdbd2cSJim Jagielski return new String[] {__serviceName}; 58*b1cdbd2cSJim Jagielski } 59*b1cdbd2cSJim Jagielski 60*b1cdbd2cSJim Jagielski /** 61*b1cdbd2cSJim Jagielski * Ask for the implementation name. 62*b1cdbd2cSJim Jagielski * @return The implementation name. 63*b1cdbd2cSJim Jagielski */ getImplementationName()64*b1cdbd2cSJim Jagielski public String getImplementationName() { 65*b1cdbd2cSJim Jagielski return getClass().getName(); 66*b1cdbd2cSJim Jagielski } 67*b1cdbd2cSJim Jagielski 68*b1cdbd2cSJim Jagielski /** 69*b1cdbd2cSJim Jagielski * Create an instance of the actual implementation of the AttributeList. 70*b1cdbd2cSJim Jagielski * Arguments are not supported, so they will bge ignored. 71*b1cdbd2cSJim Jagielski * @param args The arguments. 72*b1cdbd2cSJim Jagielski * @return A new instance of this class. 73*b1cdbd2cSJim Jagielski */ createInstanceWithArguments(Object[] args)74*b1cdbd2cSJim Jagielski public Object createInstanceWithArguments(Object[] args) { 75*b1cdbd2cSJim Jagielski return new AttributeListImpl(); 76*b1cdbd2cSJim Jagielski } 77*b1cdbd2cSJim Jagielski 78*b1cdbd2cSJim Jagielski /** 79*b1cdbd2cSJim Jagielski * Create an instance of this class. 80*b1cdbd2cSJim Jagielski * @return A new instance of this class. 81*b1cdbd2cSJim Jagielski */ createInstance()82*b1cdbd2cSJim Jagielski public Object createInstance() { 83*b1cdbd2cSJim Jagielski return createInstanceWithArguments(null); 84*b1cdbd2cSJim Jagielski } 85*b1cdbd2cSJim Jagielski } 86*b1cdbd2cSJim Jagielski 87*b1cdbd2cSJim Jagielski /** 88*b1cdbd2cSJim Jagielski * The actual implementation of the service 89*b1cdbd2cSJim Jagielski * <code>com.sun.star.xml.sax.XAttributeList</code>. 90*b1cdbd2cSJim Jagielski * Extends the class util.XMLTools.AttributeList. 91*b1cdbd2cSJim Jagielski * @see util.XMLTools.AttributeList 92*b1cdbd2cSJim Jagielski * @see com.sun.star.xml.sax.XAttributeList 93*b1cdbd2cSJim Jagielski * @see com.sun.star.lang.XTypeProvider 94*b1cdbd2cSJim Jagielski * @see com.sun.star.lang.XInitialization 95*b1cdbd2cSJim Jagielski */ 96*b1cdbd2cSJim Jagielski class AttributeListImpl extends XMLTools.AttributeList 97*b1cdbd2cSJim Jagielski implements XTypeProvider, XInitialization { 98*b1cdbd2cSJim Jagielski 99*b1cdbd2cSJim Jagielski /** 100*b1cdbd2cSJim Jagielski * Initialize this class. 101*b1cdbd2cSJim Jagielski * @param p0 An array of XML attributes that are added to the list. 102*b1cdbd2cSJim Jagielski * @throws Exception Initialize failed. 103*b1cdbd2cSJim Jagielski */ initialize(Object[] p0)104*b1cdbd2cSJim Jagielski public void initialize(Object[] p0) throws com.sun.star.uno.Exception { 105*b1cdbd2cSJim Jagielski for(int i = 0; i + 2 < p0.length; i += 3) { 106*b1cdbd2cSJim Jagielski add((String)p0[i], (String)p0[i + 1], (String)p0[i + 2]); 107*b1cdbd2cSJim Jagielski } 108*b1cdbd2cSJim Jagielski } 109*b1cdbd2cSJim Jagielski 110*b1cdbd2cSJim Jagielski /** 111*b1cdbd2cSJim Jagielski * Return all implemented types of this class. 112*b1cdbd2cSJim Jagielski * @return All UNO types of this class. 113*b1cdbd2cSJim Jagielski */ getTypes()114*b1cdbd2cSJim Jagielski public Type[] getTypes() { 115*b1cdbd2cSJim Jagielski Class interfaces[] = getClass().getInterfaces(); 116*b1cdbd2cSJim Jagielski Class superInterfaces[] = getClass().getSuperclass().getInterfaces(); 117*b1cdbd2cSJim Jagielski 118*b1cdbd2cSJim Jagielski Type types[] = new Type[interfaces.length + superInterfaces.length]; 119*b1cdbd2cSJim Jagielski int i = 0; 120*b1cdbd2cSJim Jagielski for(; i < interfaces.length; ++ i) 121*b1cdbd2cSJim Jagielski types[i] = new Type(interfaces[i]); 122*b1cdbd2cSJim Jagielski for(; i < interfaces.length + superInterfaces.length; ++ i) 123*b1cdbd2cSJim Jagielski types[i] = new Type(superInterfaces[i - interfaces.length]); 124*b1cdbd2cSJim Jagielski return types; 125*b1cdbd2cSJim Jagielski } 126*b1cdbd2cSJim Jagielski 127*b1cdbd2cSJim Jagielski /** 128*b1cdbd2cSJim Jagielski * Get a unique id for this class 129*b1cdbd2cSJim Jagielski * @return The id. 130*b1cdbd2cSJim Jagielski */ getImplementationId()131*b1cdbd2cSJim Jagielski public byte[] getImplementationId() { 132*b1cdbd2cSJim Jagielski return toString().getBytes(); 133*b1cdbd2cSJim Jagielski } 134*b1cdbd2cSJim Jagielski } 135