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 
24*b1cdbd2cSJim Jagielski //  Example DataPilot source component
25*b1cdbd2cSJim Jagielski 
26*b1cdbd2cSJim Jagielski //  helper class to hold the settings
27*b1cdbd2cSJim Jagielski 
28*b1cdbd2cSJim Jagielski class ExampleSettings
29*b1cdbd2cSJim Jagielski {
30*b1cdbd2cSJim Jagielski     static public final int nDimensionCount = 6;
31*b1cdbd2cSJim Jagielski     static public final int nValueDimension = 4;
32*b1cdbd2cSJim Jagielski     static public final int nDataDimension = 5;
33*b1cdbd2cSJim Jagielski     static public final String [] aDimensionNames = {
34*b1cdbd2cSJim Jagielski         "ones", "tens", "hundreds", "thousands", "value", "" };
35*b1cdbd2cSJim Jagielski 
getMemberName( int nMember )36*b1cdbd2cSJim Jagielski     static public final String getMemberName( int nMember )
37*b1cdbd2cSJim Jagielski     {
38*b1cdbd2cSJim Jagielski         return String.valueOf( nMember );
39*b1cdbd2cSJim Jagielski     }
40*b1cdbd2cSJim Jagielski 
41*b1cdbd2cSJim Jagielski     public int nMemberCount = 3;
42*b1cdbd2cSJim Jagielski     public java.util.List aColDimensions = new java.util.ArrayList();
43*b1cdbd2cSJim Jagielski     public java.util.List aRowDimensions = new java.util.ArrayList();
44*b1cdbd2cSJim Jagielski }
45*b1cdbd2cSJim Jagielski 
46*b1cdbd2cSJim Jagielski //  XPropertySetInfo implementation for getPropertySetInfo
47*b1cdbd2cSJim Jagielski 
48*b1cdbd2cSJim Jagielski class ExamplePropertySetInfo implements com.sun.star.beans.XPropertySetInfo
49*b1cdbd2cSJim Jagielski {
50*b1cdbd2cSJim Jagielski     private com.sun.star.beans.Property[] aProperties;
51*b1cdbd2cSJim Jagielski 
ExamplePropertySetInfo( com.sun.star.beans.Property[] aProps )52*b1cdbd2cSJim Jagielski     public ExamplePropertySetInfo( com.sun.star.beans.Property[] aProps )
53*b1cdbd2cSJim Jagielski     {
54*b1cdbd2cSJim Jagielski         aProperties = aProps;
55*b1cdbd2cSJim Jagielski     }
56*b1cdbd2cSJim Jagielski 
getProperties()57*b1cdbd2cSJim Jagielski     public com.sun.star.beans.Property[] getProperties()
58*b1cdbd2cSJim Jagielski     {
59*b1cdbd2cSJim Jagielski         return aProperties;
60*b1cdbd2cSJim Jagielski     }
61*b1cdbd2cSJim Jagielski 
getPropertyByName( String aName )62*b1cdbd2cSJim Jagielski     public com.sun.star.beans.Property getPropertyByName( String aName )
63*b1cdbd2cSJim Jagielski                     throws com.sun.star.beans.UnknownPropertyException
64*b1cdbd2cSJim Jagielski     {
65*b1cdbd2cSJim Jagielski         for ( int i=0; i<aProperties.length; i++ )
66*b1cdbd2cSJim Jagielski             if ( aProperties[i].Name.equals( aName ) )
67*b1cdbd2cSJim Jagielski                 return aProperties[i];
68*b1cdbd2cSJim Jagielski         throw new com.sun.star.beans.UnknownPropertyException();
69*b1cdbd2cSJim Jagielski     }
70*b1cdbd2cSJim Jagielski 
hasPropertyByName( String aName )71*b1cdbd2cSJim Jagielski     public boolean hasPropertyByName( String aName )
72*b1cdbd2cSJim Jagielski     {
73*b1cdbd2cSJim Jagielski         for ( int i=0; i<aProperties.length; i++ )
74*b1cdbd2cSJim Jagielski             if ( aProperties[i].Name.equals( aName ) )
75*b1cdbd2cSJim Jagielski                 return true;
76*b1cdbd2cSJim Jagielski         return false;
77*b1cdbd2cSJim Jagielski     }
78*b1cdbd2cSJim Jagielski }
79*b1cdbd2cSJim Jagielski 
80*b1cdbd2cSJim Jagielski //  implementation of com.sun.star.sheet.DataPilotSourceMember
81*b1cdbd2cSJim Jagielski 
82*b1cdbd2cSJim Jagielski class ExampleMember implements com.sun.star.container.XNamed,
83*b1cdbd2cSJim Jagielski       com.sun.star.beans.XPropertySet
84*b1cdbd2cSJim Jagielski {
85*b1cdbd2cSJim Jagielski     private ExampleSettings aSettings;
86*b1cdbd2cSJim Jagielski     private int nDimension;
87*b1cdbd2cSJim Jagielski     private int nMember;
88*b1cdbd2cSJim Jagielski 
ExampleMember( ExampleSettings aSet, int nDim, int nMbr )89*b1cdbd2cSJim Jagielski     public ExampleMember( ExampleSettings aSet, int nDim, int nMbr )
90*b1cdbd2cSJim Jagielski     {
91*b1cdbd2cSJim Jagielski         aSettings = aSet;
92*b1cdbd2cSJim Jagielski         nDimension = nDim;
93*b1cdbd2cSJim Jagielski         nMember = nMbr;
94*b1cdbd2cSJim Jagielski     }
95*b1cdbd2cSJim Jagielski 
96*b1cdbd2cSJim Jagielski     //  XNamed
97*b1cdbd2cSJim Jagielski 
getName()98*b1cdbd2cSJim Jagielski     public String getName()
99*b1cdbd2cSJim Jagielski     {
100*b1cdbd2cSJim Jagielski         return ExampleSettings.getMemberName( nMember );
101*b1cdbd2cSJim Jagielski     }
102*b1cdbd2cSJim Jagielski 
setName( String aName )103*b1cdbd2cSJim Jagielski     public void setName( String aName )
104*b1cdbd2cSJim Jagielski     {
105*b1cdbd2cSJim Jagielski         // ignored
106*b1cdbd2cSJim Jagielski     }
107*b1cdbd2cSJim Jagielski 
108*b1cdbd2cSJim Jagielski     //  XPropertySet
109*b1cdbd2cSJim Jagielski 
getPropertySetInfo()110*b1cdbd2cSJim Jagielski     public com.sun.star.beans.XPropertySetInfo getPropertySetInfo()
111*b1cdbd2cSJim Jagielski     {
112*b1cdbd2cSJim Jagielski         return new ExamplePropertySetInfo( new com.sun.star.beans.Property[] {
113*b1cdbd2cSJim Jagielski             new com.sun.star.beans.Property( "IsVisible",   -1,
114*b1cdbd2cSJim Jagielski                         new com.sun.star.uno.Type( Boolean.class ), (short) 0),
115*b1cdbd2cSJim Jagielski             new com.sun.star.beans.Property( "ShowDetails", -1,
116*b1cdbd2cSJim Jagielski                         new com.sun.star.uno.Type( Boolean.class ), (short) 0) });
117*b1cdbd2cSJim Jagielski     }
118*b1cdbd2cSJim Jagielski 
setPropertyValue( String aPropertyName, Object aValue )119*b1cdbd2cSJim Jagielski     public void setPropertyValue( String aPropertyName, Object aValue )
120*b1cdbd2cSJim Jagielski         throws com.sun.star.beans.UnknownPropertyException
121*b1cdbd2cSJim Jagielski     {
122*b1cdbd2cSJim Jagielski         if ( aPropertyName.equals( "IsVisible" ) ||
123*b1cdbd2cSJim Jagielski              aPropertyName.equals( "ShowDetails" ) )
124*b1cdbd2cSJim Jagielski         {
125*b1cdbd2cSJim Jagielski             // ignored
126*b1cdbd2cSJim Jagielski         }
127*b1cdbd2cSJim Jagielski         else
128*b1cdbd2cSJim Jagielski             throw new com.sun.star.beans.UnknownPropertyException();
129*b1cdbd2cSJim Jagielski     }
130*b1cdbd2cSJim Jagielski 
getPropertyValue( String aPropertyName )131*b1cdbd2cSJim Jagielski     public Object getPropertyValue( String aPropertyName )
132*b1cdbd2cSJim Jagielski         throws com.sun.star.beans.UnknownPropertyException
133*b1cdbd2cSJim Jagielski     {
134*b1cdbd2cSJim Jagielski         if ( aPropertyName.equals( "IsVisible" ) ||
135*b1cdbd2cSJim Jagielski              aPropertyName.equals( "ShowDetails" ) )
136*b1cdbd2cSJim Jagielski         {
137*b1cdbd2cSJim Jagielski             return new Boolean( true );     // always true
138*b1cdbd2cSJim Jagielski         }
139*b1cdbd2cSJim Jagielski         else
140*b1cdbd2cSJim Jagielski             throw new com.sun.star.beans.UnknownPropertyException();
141*b1cdbd2cSJim Jagielski     }
142*b1cdbd2cSJim Jagielski 
addPropertyChangeListener( String aPropertyName, com.sun.star.beans.XPropertyChangeListener xListener)143*b1cdbd2cSJim Jagielski     public void addPropertyChangeListener(
144*b1cdbd2cSJim Jagielski         String aPropertyName, com.sun.star.beans.XPropertyChangeListener xListener)
145*b1cdbd2cSJim Jagielski     {
146*b1cdbd2cSJim Jagielski     }
removePropertyChangeListener( String aPropertyName, com.sun.star.beans.XPropertyChangeListener aListener)147*b1cdbd2cSJim Jagielski     public void removePropertyChangeListener(
148*b1cdbd2cSJim Jagielski         String aPropertyName, com.sun.star.beans.XPropertyChangeListener aListener)
149*b1cdbd2cSJim Jagielski     {
150*b1cdbd2cSJim Jagielski     }
addVetoableChangeListener( String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener)151*b1cdbd2cSJim Jagielski     public void addVetoableChangeListener(
152*b1cdbd2cSJim Jagielski         String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener)
153*b1cdbd2cSJim Jagielski     {
154*b1cdbd2cSJim Jagielski     }
removeVetoableChangeListener( String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener)155*b1cdbd2cSJim Jagielski     public void removeVetoableChangeListener(
156*b1cdbd2cSJim Jagielski         String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener)
157*b1cdbd2cSJim Jagielski     {
158*b1cdbd2cSJim Jagielski     }
159*b1cdbd2cSJim Jagielski }
160*b1cdbd2cSJim Jagielski 
161*b1cdbd2cSJim Jagielski //  implementation of com.sun.star.sheet.DataPilotSourceMembers
162*b1cdbd2cSJim Jagielski 
163*b1cdbd2cSJim Jagielski class ExampleMembers implements com.sun.star.container.XNameAccess
164*b1cdbd2cSJim Jagielski {
165*b1cdbd2cSJim Jagielski     private ExampleSettings aSettings;
166*b1cdbd2cSJim Jagielski     private int nDimension;
167*b1cdbd2cSJim Jagielski     private ExampleMember[] aMembers;
168*b1cdbd2cSJim Jagielski 
ExampleMembers( ExampleSettings aSet, int nDim )169*b1cdbd2cSJim Jagielski     public ExampleMembers( ExampleSettings aSet, int nDim )
170*b1cdbd2cSJim Jagielski     {
171*b1cdbd2cSJim Jagielski         aSettings = aSet;
172*b1cdbd2cSJim Jagielski         nDimension = nDim;
173*b1cdbd2cSJim Jagielski         aMembers = new ExampleMember[ aSettings.nMemberCount ];
174*b1cdbd2cSJim Jagielski     }
175*b1cdbd2cSJim Jagielski 
176*b1cdbd2cSJim Jagielski     //  XNameAccess
177*b1cdbd2cSJim Jagielski 
getElementType()178*b1cdbd2cSJim Jagielski     public com.sun.star.uno.Type getElementType()
179*b1cdbd2cSJim Jagielski     {
180*b1cdbd2cSJim Jagielski         return new com.sun.star.uno.Type( com.sun.star.container.XNamed.class );
181*b1cdbd2cSJim Jagielski     }
182*b1cdbd2cSJim Jagielski 
hasElements()183*b1cdbd2cSJim Jagielski     public boolean hasElements()
184*b1cdbd2cSJim Jagielski     {
185*b1cdbd2cSJim Jagielski         return true;    // always has elements
186*b1cdbd2cSJim Jagielski     }
187*b1cdbd2cSJim Jagielski 
getByName( String aName )188*b1cdbd2cSJim Jagielski     public Object getByName( String aName )
189*b1cdbd2cSJim Jagielski         throws com.sun.star.container.NoSuchElementException
190*b1cdbd2cSJim Jagielski     {
191*b1cdbd2cSJim Jagielski         int nCount = aSettings.nMemberCount;
192*b1cdbd2cSJim Jagielski         for ( int i=0; i<nCount; i++ )
193*b1cdbd2cSJim Jagielski             if ( aName.equals( ExampleSettings.getMemberName( i ) ) )
194*b1cdbd2cSJim Jagielski             {
195*b1cdbd2cSJim Jagielski                 if ( aMembers[i] == null )
196*b1cdbd2cSJim Jagielski                     aMembers[i] = new ExampleMember( aSettings, nDimension, i );
197*b1cdbd2cSJim Jagielski                 return aMembers[i];
198*b1cdbd2cSJim Jagielski             }
199*b1cdbd2cSJim Jagielski         throw new com.sun.star.container.NoSuchElementException();
200*b1cdbd2cSJim Jagielski     }
201*b1cdbd2cSJim Jagielski 
getElementNames()202*b1cdbd2cSJim Jagielski     public String[] getElementNames()
203*b1cdbd2cSJim Jagielski     {
204*b1cdbd2cSJim Jagielski         int nCount = aSettings.nMemberCount;
205*b1cdbd2cSJim Jagielski         String [] aNames = new String[ nCount ];
206*b1cdbd2cSJim Jagielski         for ( int i=0; i<nCount; i++ )
207*b1cdbd2cSJim Jagielski             aNames[i] = ExampleSettings.getMemberName( i );
208*b1cdbd2cSJim Jagielski         return aNames;
209*b1cdbd2cSJim Jagielski     }
210*b1cdbd2cSJim Jagielski 
hasByName( String aName )211*b1cdbd2cSJim Jagielski     public boolean hasByName( String aName )
212*b1cdbd2cSJim Jagielski     {
213*b1cdbd2cSJim Jagielski         int nCount = aSettings.nMemberCount;
214*b1cdbd2cSJim Jagielski         for ( int i=0; i<nCount; i++ )
215*b1cdbd2cSJim Jagielski             if ( aName.equals( ExampleSettings.getMemberName( i ) ) )
216*b1cdbd2cSJim Jagielski                 return true;
217*b1cdbd2cSJim Jagielski         return false;
218*b1cdbd2cSJim Jagielski     }
219*b1cdbd2cSJim Jagielski }
220*b1cdbd2cSJim Jagielski 
221*b1cdbd2cSJim Jagielski //  implementation of com.sun.star.sheet.DataPilotSourceLevel
222*b1cdbd2cSJim Jagielski 
223*b1cdbd2cSJim Jagielski class ExampleLevel implements
224*b1cdbd2cSJim Jagielski                     com.sun.star.container.XNamed,
225*b1cdbd2cSJim Jagielski                     com.sun.star.sheet.XMembersSupplier,
226*b1cdbd2cSJim Jagielski                     com.sun.star.sheet.XDataPilotMemberResults,
227*b1cdbd2cSJim Jagielski                     com.sun.star.beans.XPropertySet
228*b1cdbd2cSJim Jagielski {
229*b1cdbd2cSJim Jagielski     private ExampleSettings aSettings;
230*b1cdbd2cSJim Jagielski     private int nDimension;
231*b1cdbd2cSJim Jagielski     private ExampleMembers aMembers;
232*b1cdbd2cSJim Jagielski 
ExampleLevel( ExampleSettings aSet, int nDim )233*b1cdbd2cSJim Jagielski     public ExampleLevel( ExampleSettings aSet, int nDim )
234*b1cdbd2cSJim Jagielski     {
235*b1cdbd2cSJim Jagielski         aSettings = aSet;
236*b1cdbd2cSJim Jagielski         nDimension = nDim;
237*b1cdbd2cSJim Jagielski     }
238*b1cdbd2cSJim Jagielski 
239*b1cdbd2cSJim Jagielski     // XNamed
240*b1cdbd2cSJim Jagielski 
getName()241*b1cdbd2cSJim Jagielski     public String getName()
242*b1cdbd2cSJim Jagielski     {
243*b1cdbd2cSJim Jagielski         return ExampleSettings.aDimensionNames[ nDimension ];
244*b1cdbd2cSJim Jagielski     }
245*b1cdbd2cSJim Jagielski 
setName( String aName )246*b1cdbd2cSJim Jagielski     public void setName( String aName )
247*b1cdbd2cSJim Jagielski     {
248*b1cdbd2cSJim Jagielski         // ignored
249*b1cdbd2cSJim Jagielski     }
250*b1cdbd2cSJim Jagielski 
251*b1cdbd2cSJim Jagielski     // XMembersSupplier
252*b1cdbd2cSJim Jagielski 
getMembers()253*b1cdbd2cSJim Jagielski     public com.sun.star.container.XNameAccess getMembers()
254*b1cdbd2cSJim Jagielski     {
255*b1cdbd2cSJim Jagielski         if ( aMembers == null )
256*b1cdbd2cSJim Jagielski             aMembers = new ExampleMembers( aSettings, nDimension );
257*b1cdbd2cSJim Jagielski         return aMembers;
258*b1cdbd2cSJim Jagielski     }
259*b1cdbd2cSJim Jagielski 
260*b1cdbd2cSJim Jagielski     // XDataPilotMemberResults
261*b1cdbd2cSJim Jagielski 
getResults()262*b1cdbd2cSJim Jagielski     public com.sun.star.sheet.MemberResult[] getResults()
263*b1cdbd2cSJim Jagielski     {
264*b1cdbd2cSJim Jagielski         int nDimensions = 0;
265*b1cdbd2cSJim Jagielski         int nPosition = aSettings.aColDimensions.indexOf( new Integer(nDimension));
266*b1cdbd2cSJim Jagielski         if ( nPosition >= 0 )
267*b1cdbd2cSJim Jagielski             nDimensions = aSettings.aColDimensions.size();
268*b1cdbd2cSJim Jagielski         else
269*b1cdbd2cSJim Jagielski         {
270*b1cdbd2cSJim Jagielski             nPosition = aSettings.aRowDimensions.indexOf( new Integer(nDimension));
271*b1cdbd2cSJim Jagielski             if ( nPosition >= 0 )
272*b1cdbd2cSJim Jagielski                 nDimensions = aSettings.aRowDimensions.size();
273*b1cdbd2cSJim Jagielski         }
274*b1cdbd2cSJim Jagielski 
275*b1cdbd2cSJim Jagielski         if ( nPosition < 0 )
276*b1cdbd2cSJim Jagielski             return new com.sun.star.sheet.MemberResult[0];
277*b1cdbd2cSJim Jagielski 
278*b1cdbd2cSJim Jagielski         int nMembers = aSettings.nMemberCount;
279*b1cdbd2cSJim Jagielski         int nRepeat = 1;
280*b1cdbd2cSJim Jagielski         int nFill = 1;
281*b1cdbd2cSJim Jagielski         for ( int i=0; i<nDimensions; i++ )
282*b1cdbd2cSJim Jagielski         {
283*b1cdbd2cSJim Jagielski             if ( i < nPosition )
284*b1cdbd2cSJim Jagielski                 nRepeat *= nMembers;
285*b1cdbd2cSJim Jagielski             else if ( i > nPosition )
286*b1cdbd2cSJim Jagielski                 nFill *= nMembers;
287*b1cdbd2cSJim Jagielski         }
288*b1cdbd2cSJim Jagielski         int nSize = nRepeat * nMembers * nFill;
289*b1cdbd2cSJim Jagielski 
290*b1cdbd2cSJim Jagielski         com.sun.star.sheet.MemberResult[] aResults =
291*b1cdbd2cSJim Jagielski             new com.sun.star.sheet.MemberResult[nSize];
292*b1cdbd2cSJim Jagielski         int nResultPos = 0;
293*b1cdbd2cSJim Jagielski         for (int nOuter=0; nOuter<nRepeat; nOuter++)
294*b1cdbd2cSJim Jagielski         {
295*b1cdbd2cSJim Jagielski             for (int nMember=0; nMember<nMembers; nMember++)
296*b1cdbd2cSJim Jagielski             {
297*b1cdbd2cSJim Jagielski                 aResults[nResultPos] = new com.sun.star.sheet.MemberResult();
298*b1cdbd2cSJim Jagielski                 aResults[nResultPos].Name = ExampleSettings.getMemberName(nMember);
299*b1cdbd2cSJim Jagielski                 aResults[nResultPos].Caption = aResults[nResultPos].Name;
300*b1cdbd2cSJim Jagielski                 aResults[nResultPos].Flags =
301*b1cdbd2cSJim Jagielski                     com.sun.star.sheet.MemberResultFlags.HASMEMBER;
302*b1cdbd2cSJim Jagielski                 ++nResultPos;
303*b1cdbd2cSJim Jagielski 
304*b1cdbd2cSJim Jagielski                 for (int nInner=1; nInner<nFill; nInner++)
305*b1cdbd2cSJim Jagielski                 {
306*b1cdbd2cSJim Jagielski                     aResults[nResultPos] = new com.sun.star.sheet.MemberResult();
307*b1cdbd2cSJim Jagielski                     aResults[nResultPos].Flags =
308*b1cdbd2cSJim Jagielski                         com.sun.star.sheet.MemberResultFlags.CONTINUE;
309*b1cdbd2cSJim Jagielski                     ++nResultPos;
310*b1cdbd2cSJim Jagielski                 }
311*b1cdbd2cSJim Jagielski             }
312*b1cdbd2cSJim Jagielski         }
313*b1cdbd2cSJim Jagielski         return aResults;
314*b1cdbd2cSJim Jagielski     }
315*b1cdbd2cSJim Jagielski 
316*b1cdbd2cSJim Jagielski     //  XPropertySet
317*b1cdbd2cSJim Jagielski 
getPropertySetInfo()318*b1cdbd2cSJim Jagielski     public com.sun.star.beans.XPropertySetInfo getPropertySetInfo()
319*b1cdbd2cSJim Jagielski     {
320*b1cdbd2cSJim Jagielski         return new ExamplePropertySetInfo( new com.sun.star.beans.Property[] {
321*b1cdbd2cSJim Jagielski             new com.sun.star.beans.Property( "SubTotals", -1,
322*b1cdbd2cSJim Jagielski                             new com.sun.star.uno.Type(
323*b1cdbd2cSJim Jagielski                                 com.sun.star.sheet.GeneralFunction[].class ),
324*b1cdbd2cSJim Jagielski                                              (short) 0 ),
325*b1cdbd2cSJim Jagielski             new com.sun.star.beans.Property( "ShowEmpty", -1,
326*b1cdbd2cSJim Jagielski                              new com.sun.star.uno.Type( Boolean.class ),
327*b1cdbd2cSJim Jagielski                                              (short) 0 ) } );
328*b1cdbd2cSJim Jagielski     }
329*b1cdbd2cSJim Jagielski 
setPropertyValue( String aPropertyName, Object aValue )330*b1cdbd2cSJim Jagielski     public void setPropertyValue( String aPropertyName, Object aValue )
331*b1cdbd2cSJim Jagielski         throws com.sun.star.beans.UnknownPropertyException
332*b1cdbd2cSJim Jagielski     {
333*b1cdbd2cSJim Jagielski         if ( aPropertyName.equals( "SubTotals" ) ||
334*b1cdbd2cSJim Jagielski              aPropertyName.equals( "ShowEmpty" ) )
335*b1cdbd2cSJim Jagielski         {
336*b1cdbd2cSJim Jagielski             // ignored
337*b1cdbd2cSJim Jagielski         }
338*b1cdbd2cSJim Jagielski         else
339*b1cdbd2cSJim Jagielski             throw new com.sun.star.beans.UnknownPropertyException();
340*b1cdbd2cSJim Jagielski     }
341*b1cdbd2cSJim Jagielski 
getPropertyValue( String aPropertyName )342*b1cdbd2cSJim Jagielski     public Object getPropertyValue( String aPropertyName )
343*b1cdbd2cSJim Jagielski         throws com.sun.star.beans.UnknownPropertyException
344*b1cdbd2cSJim Jagielski     {
345*b1cdbd2cSJim Jagielski         if ( aPropertyName.equals( "SubTotals" ) )
346*b1cdbd2cSJim Jagielski             return new com.sun.star.sheet.GeneralFunction[0];
347*b1cdbd2cSJim Jagielski         else if ( aPropertyName.equals( "ShowEmpty" ) )
348*b1cdbd2cSJim Jagielski             return new Boolean( true );
349*b1cdbd2cSJim Jagielski         else
350*b1cdbd2cSJim Jagielski             throw new com.sun.star.beans.UnknownPropertyException();
351*b1cdbd2cSJim Jagielski     }
352*b1cdbd2cSJim Jagielski 
addPropertyChangeListener( String aPropertyName, com.sun.star.beans.XPropertyChangeListener xListener)353*b1cdbd2cSJim Jagielski     public void addPropertyChangeListener(
354*b1cdbd2cSJim Jagielski         String aPropertyName, com.sun.star.beans.XPropertyChangeListener xListener)
355*b1cdbd2cSJim Jagielski     {
356*b1cdbd2cSJim Jagielski     }
removePropertyChangeListener( String aPropertyName, com.sun.star.beans.XPropertyChangeListener aListener)357*b1cdbd2cSJim Jagielski     public void removePropertyChangeListener(
358*b1cdbd2cSJim Jagielski         String aPropertyName, com.sun.star.beans.XPropertyChangeListener aListener)
359*b1cdbd2cSJim Jagielski     {
360*b1cdbd2cSJim Jagielski     }
addVetoableChangeListener( String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener)361*b1cdbd2cSJim Jagielski     public void addVetoableChangeListener(
362*b1cdbd2cSJim Jagielski         String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener)
363*b1cdbd2cSJim Jagielski     {
364*b1cdbd2cSJim Jagielski     }
removeVetoableChangeListener( String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener)365*b1cdbd2cSJim Jagielski     public void removeVetoableChangeListener(
366*b1cdbd2cSJim Jagielski         String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener)
367*b1cdbd2cSJim Jagielski     {
368*b1cdbd2cSJim Jagielski     }
369*b1cdbd2cSJim Jagielski }
370*b1cdbd2cSJim Jagielski 
371*b1cdbd2cSJim Jagielski //  implementation of com.sun.star.sheet.DataPilotSourceLevels
372*b1cdbd2cSJim Jagielski 
373*b1cdbd2cSJim Jagielski class ExampleLevels implements com.sun.star.container.XNameAccess
374*b1cdbd2cSJim Jagielski {
375*b1cdbd2cSJim Jagielski     private ExampleSettings aSettings;
376*b1cdbd2cSJim Jagielski     private int nDimension;
377*b1cdbd2cSJim Jagielski     private ExampleLevel aLevel;
378*b1cdbd2cSJim Jagielski 
ExampleLevels( ExampleSettings aSet, int nDim )379*b1cdbd2cSJim Jagielski     public ExampleLevels( ExampleSettings aSet, int nDim )
380*b1cdbd2cSJim Jagielski     {
381*b1cdbd2cSJim Jagielski         aSettings = aSet;
382*b1cdbd2cSJim Jagielski         nDimension = nDim;
383*b1cdbd2cSJim Jagielski     }
384*b1cdbd2cSJim Jagielski 
385*b1cdbd2cSJim Jagielski     // XNameAccess
386*b1cdbd2cSJim Jagielski 
getElementType()387*b1cdbd2cSJim Jagielski     public com.sun.star.uno.Type getElementType()
388*b1cdbd2cSJim Jagielski     {
389*b1cdbd2cSJim Jagielski         return new com.sun.star.uno.Type( com.sun.star.container.XNamed.class );
390*b1cdbd2cSJim Jagielski     }
391*b1cdbd2cSJim Jagielski 
hasElements()392*b1cdbd2cSJim Jagielski     public boolean hasElements()
393*b1cdbd2cSJim Jagielski     {
394*b1cdbd2cSJim Jagielski         return true;    // always has elements
395*b1cdbd2cSJim Jagielski     }
396*b1cdbd2cSJim Jagielski 
getByName( String aName )397*b1cdbd2cSJim Jagielski     public Object getByName( String aName )
398*b1cdbd2cSJim Jagielski         throws com.sun.star.container.NoSuchElementException
399*b1cdbd2cSJim Jagielski     {
400*b1cdbd2cSJim Jagielski         //  there's only one level with the same name as the dimension / hierarchy
401*b1cdbd2cSJim Jagielski         if ( aName.equals( ExampleSettings.aDimensionNames[nDimension] ) )
402*b1cdbd2cSJim Jagielski         {
403*b1cdbd2cSJim Jagielski             if ( aLevel == null )
404*b1cdbd2cSJim Jagielski                 aLevel = new ExampleLevel( aSettings, nDimension );
405*b1cdbd2cSJim Jagielski             return aLevel;
406*b1cdbd2cSJim Jagielski         }
407*b1cdbd2cSJim Jagielski         throw new com.sun.star.container.NoSuchElementException();
408*b1cdbd2cSJim Jagielski     }
409*b1cdbd2cSJim Jagielski 
getElementNames()410*b1cdbd2cSJim Jagielski     public String[] getElementNames()
411*b1cdbd2cSJim Jagielski     {
412*b1cdbd2cSJim Jagielski         String [] aNames = new String[ 1 ];
413*b1cdbd2cSJim Jagielski         aNames[0] = ExampleSettings.aDimensionNames[nDimension];
414*b1cdbd2cSJim Jagielski         return aNames;
415*b1cdbd2cSJim Jagielski     }
416*b1cdbd2cSJim Jagielski 
hasByName( String aName )417*b1cdbd2cSJim Jagielski     public boolean hasByName( String aName )
418*b1cdbd2cSJim Jagielski     {
419*b1cdbd2cSJim Jagielski         return aName.equals( ExampleSettings.aDimensionNames[nDimension] );
420*b1cdbd2cSJim Jagielski     }
421*b1cdbd2cSJim Jagielski }
422*b1cdbd2cSJim Jagielski 
423*b1cdbd2cSJim Jagielski //  implementation of com.sun.star.sheet.DataPilotSourceHierarchy
424*b1cdbd2cSJim Jagielski 
425*b1cdbd2cSJim Jagielski class ExampleHierarchy implements com.sun.star.container.XNamed,
426*b1cdbd2cSJim Jagielski       com.sun.star.sheet.XLevelsSupplier
427*b1cdbd2cSJim Jagielski {
428*b1cdbd2cSJim Jagielski     private ExampleSettings aSettings;
429*b1cdbd2cSJim Jagielski     private int nDimension;
430*b1cdbd2cSJim Jagielski     private ExampleLevels aLevels;
431*b1cdbd2cSJim Jagielski 
ExampleHierarchy( ExampleSettings aSet, int nDim )432*b1cdbd2cSJim Jagielski     public ExampleHierarchy( ExampleSettings aSet, int nDim )
433*b1cdbd2cSJim Jagielski     {
434*b1cdbd2cSJim Jagielski         aSettings = aSet;
435*b1cdbd2cSJim Jagielski         nDimension = nDim;
436*b1cdbd2cSJim Jagielski     }
437*b1cdbd2cSJim Jagielski 
438*b1cdbd2cSJim Jagielski     // XNamed
439*b1cdbd2cSJim Jagielski 
getName()440*b1cdbd2cSJim Jagielski     public String getName()
441*b1cdbd2cSJim Jagielski     {
442*b1cdbd2cSJim Jagielski         return ExampleSettings.aDimensionNames[ nDimension ];
443*b1cdbd2cSJim Jagielski     }
444*b1cdbd2cSJim Jagielski 
setName( String aName )445*b1cdbd2cSJim Jagielski     public void setName( String aName )
446*b1cdbd2cSJim Jagielski     {
447*b1cdbd2cSJim Jagielski         // ignored
448*b1cdbd2cSJim Jagielski     }
449*b1cdbd2cSJim Jagielski 
450*b1cdbd2cSJim Jagielski     // XLevelsSupplier
451*b1cdbd2cSJim Jagielski 
getLevels()452*b1cdbd2cSJim Jagielski     public com.sun.star.container.XNameAccess getLevels()
453*b1cdbd2cSJim Jagielski     {
454*b1cdbd2cSJim Jagielski         if ( aLevels == null )
455*b1cdbd2cSJim Jagielski             aLevels = new ExampleLevels( aSettings, nDimension );
456*b1cdbd2cSJim Jagielski         return aLevels;
457*b1cdbd2cSJim Jagielski     }
458*b1cdbd2cSJim Jagielski }
459*b1cdbd2cSJim Jagielski 
460*b1cdbd2cSJim Jagielski //  implementation of com.sun.star.sheet.DataPilotSourceHierarchies
461*b1cdbd2cSJim Jagielski 
462*b1cdbd2cSJim Jagielski class ExampleHierarchies implements com.sun.star.container.XNameAccess
463*b1cdbd2cSJim Jagielski {
464*b1cdbd2cSJim Jagielski     private ExampleSettings aSettings;
465*b1cdbd2cSJim Jagielski     private int nDimension;
466*b1cdbd2cSJim Jagielski     private ExampleHierarchy aHierarchy;
467*b1cdbd2cSJim Jagielski 
ExampleHierarchies( ExampleSettings aSet, int nDim )468*b1cdbd2cSJim Jagielski     public ExampleHierarchies( ExampleSettings aSet, int nDim )
469*b1cdbd2cSJim Jagielski     {
470*b1cdbd2cSJim Jagielski         aSettings = aSet;
471*b1cdbd2cSJim Jagielski         nDimension = nDim;
472*b1cdbd2cSJim Jagielski     }
473*b1cdbd2cSJim Jagielski 
474*b1cdbd2cSJim Jagielski     //  XNameAccess
475*b1cdbd2cSJim Jagielski 
getElementType()476*b1cdbd2cSJim Jagielski     public com.sun.star.uno.Type getElementType()
477*b1cdbd2cSJim Jagielski     {
478*b1cdbd2cSJim Jagielski         return new com.sun.star.uno.Type( com.sun.star.container.XNamed.class );
479*b1cdbd2cSJim Jagielski     }
480*b1cdbd2cSJim Jagielski 
hasElements()481*b1cdbd2cSJim Jagielski     public boolean hasElements()
482*b1cdbd2cSJim Jagielski     {
483*b1cdbd2cSJim Jagielski         return true;    // always has elements
484*b1cdbd2cSJim Jagielski     }
485*b1cdbd2cSJim Jagielski 
getByName( String aName )486*b1cdbd2cSJim Jagielski     public Object getByName( String aName )
487*b1cdbd2cSJim Jagielski         throws com.sun.star.container.NoSuchElementException
488*b1cdbd2cSJim Jagielski     {
489*b1cdbd2cSJim Jagielski         //  there's only one hierarchy with the same name as the dimension
490*b1cdbd2cSJim Jagielski         if ( aName.equals( ExampleSettings.aDimensionNames[nDimension] ) )
491*b1cdbd2cSJim Jagielski         {
492*b1cdbd2cSJim Jagielski             if ( aHierarchy == null )
493*b1cdbd2cSJim Jagielski                 aHierarchy = new ExampleHierarchy( aSettings, nDimension );
494*b1cdbd2cSJim Jagielski             return aHierarchy;
495*b1cdbd2cSJim Jagielski         }
496*b1cdbd2cSJim Jagielski         throw new com.sun.star.container.NoSuchElementException();
497*b1cdbd2cSJim Jagielski     }
498*b1cdbd2cSJim Jagielski 
getElementNames()499*b1cdbd2cSJim Jagielski     public String[] getElementNames()
500*b1cdbd2cSJim Jagielski     {
501*b1cdbd2cSJim Jagielski         String [] aNames = new String[ 1 ];
502*b1cdbd2cSJim Jagielski         aNames[0] = ExampleSettings.aDimensionNames[nDimension];
503*b1cdbd2cSJim Jagielski         return aNames;
504*b1cdbd2cSJim Jagielski     }
505*b1cdbd2cSJim Jagielski 
hasByName( String aName )506*b1cdbd2cSJim Jagielski     public boolean hasByName( String aName )
507*b1cdbd2cSJim Jagielski     {
508*b1cdbd2cSJim Jagielski         return aName.equals( ExampleSettings.aDimensionNames[nDimension] );
509*b1cdbd2cSJim Jagielski     }
510*b1cdbd2cSJim Jagielski }
511*b1cdbd2cSJim Jagielski 
512*b1cdbd2cSJim Jagielski //  implementation of com.sun.star.sheet.DataPilotSourceDimension
513*b1cdbd2cSJim Jagielski 
514*b1cdbd2cSJim Jagielski class ExampleDimension implements
515*b1cdbd2cSJim Jagielski                     com.sun.star.container.XNamed,
516*b1cdbd2cSJim Jagielski                     com.sun.star.sheet.XHierarchiesSupplier,
517*b1cdbd2cSJim Jagielski                     com.sun.star.util.XCloneable,
518*b1cdbd2cSJim Jagielski                     com.sun.star.beans.XPropertySet
519*b1cdbd2cSJim Jagielski {
520*b1cdbd2cSJim Jagielski     private ExampleSettings aSettings;
521*b1cdbd2cSJim Jagielski     private int nDimension;
522*b1cdbd2cSJim Jagielski     private ExampleHierarchies aHierarchies;
523*b1cdbd2cSJim Jagielski     private com.sun.star.sheet.DataPilotFieldOrientation eOrientation;
524*b1cdbd2cSJim Jagielski 
ExampleDimension( ExampleSettings aSet, int nDim )525*b1cdbd2cSJim Jagielski     public ExampleDimension( ExampleSettings aSet, int nDim )
526*b1cdbd2cSJim Jagielski     {
527*b1cdbd2cSJim Jagielski         aSettings = aSet;
528*b1cdbd2cSJim Jagielski         nDimension = nDim;
529*b1cdbd2cSJim Jagielski         eOrientation = ( nDim == ExampleSettings.nValueDimension ) ?
530*b1cdbd2cSJim Jagielski             com.sun.star.sheet.DataPilotFieldOrientation.DATA :
531*b1cdbd2cSJim Jagielski             com.sun.star.sheet.DataPilotFieldOrientation.HIDDEN;
532*b1cdbd2cSJim Jagielski     }
533*b1cdbd2cSJim Jagielski 
534*b1cdbd2cSJim Jagielski     //  XNamed
535*b1cdbd2cSJim Jagielski 
getName()536*b1cdbd2cSJim Jagielski     public String getName()
537*b1cdbd2cSJim Jagielski     {
538*b1cdbd2cSJim Jagielski         return ExampleSettings.aDimensionNames[ nDimension ];
539*b1cdbd2cSJim Jagielski     }
540*b1cdbd2cSJim Jagielski 
setName( String aName )541*b1cdbd2cSJim Jagielski     public void setName( String aName )
542*b1cdbd2cSJim Jagielski     {
543*b1cdbd2cSJim Jagielski         // ignored
544*b1cdbd2cSJim Jagielski     }
545*b1cdbd2cSJim Jagielski 
546*b1cdbd2cSJim Jagielski     //  XHierarchiesSupplier
547*b1cdbd2cSJim Jagielski 
getHierarchies()548*b1cdbd2cSJim Jagielski     public com.sun.star.container.XNameAccess getHierarchies()
549*b1cdbd2cSJim Jagielski     {
550*b1cdbd2cSJim Jagielski         if ( aHierarchies == null )
551*b1cdbd2cSJim Jagielski             aHierarchies = new ExampleHierarchies( aSettings, nDimension );
552*b1cdbd2cSJim Jagielski         return aHierarchies;
553*b1cdbd2cSJim Jagielski     }
554*b1cdbd2cSJim Jagielski 
555*b1cdbd2cSJim Jagielski     //  XCloneable
556*b1cdbd2cSJim Jagielski 
createClone()557*b1cdbd2cSJim Jagielski     public com.sun.star.util.XCloneable createClone()
558*b1cdbd2cSJim Jagielski     {
559*b1cdbd2cSJim Jagielski         return null;        // not supported
560*b1cdbd2cSJim Jagielski     }
561*b1cdbd2cSJim Jagielski 
562*b1cdbd2cSJim Jagielski     //  XPropertySet
563*b1cdbd2cSJim Jagielski 
getPropertySetInfo()564*b1cdbd2cSJim Jagielski     public com.sun.star.beans.XPropertySetInfo getPropertySetInfo()
565*b1cdbd2cSJim Jagielski     {
566*b1cdbd2cSJim Jagielski         return new ExamplePropertySetInfo( new com.sun.star.beans.Property[] {
567*b1cdbd2cSJim Jagielski             new com.sun.star.beans.Property( "Original", -1,
568*b1cdbd2cSJim Jagielski                 new com.sun.star.uno.Type( com.sun.star.container.XNamed.class),
569*b1cdbd2cSJim Jagielski                 (short) com.sun.star.beans.PropertyAttribute.READONLY ),
570*b1cdbd2cSJim Jagielski             new com.sun.star.beans.Property( "IsDataLayoutDimension", -1,
571*b1cdbd2cSJim Jagielski                 new com.sun.star.uno.Type( Boolean.class),
572*b1cdbd2cSJim Jagielski                 (short) com.sun.star.beans.PropertyAttribute.READONLY ),
573*b1cdbd2cSJim Jagielski             new com.sun.star.beans.Property( "Orientation", -1,
574*b1cdbd2cSJim Jagielski                 new com.sun.star.uno.Type(
575*b1cdbd2cSJim Jagielski                   com.sun.star.sheet.DataPilotFieldOrientation.class), (short) 0),
576*b1cdbd2cSJim Jagielski             new com.sun.star.beans.Property( "Position", -1,
577*b1cdbd2cSJim Jagielski                 new com.sun.star.uno.Type( Integer.class ), (short) 0),
578*b1cdbd2cSJim Jagielski             new com.sun.star.beans.Property( "Function", -1,
579*b1cdbd2cSJim Jagielski                 new com.sun.star.uno.Type(com.sun.star.sheet.GeneralFunction.class),
580*b1cdbd2cSJim Jagielski                                              (short) 0 ),
581*b1cdbd2cSJim Jagielski             new com.sun.star.beans.Property( "UsedHierarchy", -1,
582*b1cdbd2cSJim Jagielski                 new com.sun.star.uno.Type( Integer.class ), (short) 0 ),
583*b1cdbd2cSJim Jagielski             new com.sun.star.beans.Property( "Filter", -1,
584*b1cdbd2cSJim Jagielski                 new com.sun.star.uno.Type(
585*b1cdbd2cSJim Jagielski                     com.sun.star.sheet.TableFilterField[].class), (short) 0) });
586*b1cdbd2cSJim Jagielski     }
587*b1cdbd2cSJim Jagielski 
setPropertyValue( String aPropertyName, Object aValue )588*b1cdbd2cSJim Jagielski     public void setPropertyValue( String aPropertyName, Object aValue )
589*b1cdbd2cSJim Jagielski                     throws com.sun.star.beans.UnknownPropertyException
590*b1cdbd2cSJim Jagielski     {
591*b1cdbd2cSJim Jagielski         if ( aPropertyName.equals( "Orientation" ) )
592*b1cdbd2cSJim Jagielski         {
593*b1cdbd2cSJim Jagielski             com.sun.star.sheet.DataPilotFieldOrientation eNewOrient =
594*b1cdbd2cSJim Jagielski                         (com.sun.star.sheet.DataPilotFieldOrientation) aValue;
595*b1cdbd2cSJim Jagielski             if ( nDimension != ExampleSettings.nValueDimension &&
596*b1cdbd2cSJim Jagielski                  nDimension != ExampleSettings.nDataDimension &&
597*b1cdbd2cSJim Jagielski                  eNewOrient != com.sun.star.sheet.DataPilotFieldOrientation.DATA )
598*b1cdbd2cSJim Jagielski             {
599*b1cdbd2cSJim Jagielski                 // remove from list for old orientation and add for new one
600*b1cdbd2cSJim Jagielski                 Integer aDimInt = new Integer(nDimension);
601*b1cdbd2cSJim Jagielski                 if ( eOrientation == com.sun.star.sheet.DataPilotFieldOrientation.COLUMN )
602*b1cdbd2cSJim Jagielski                     aSettings.aColDimensions.remove( aDimInt );
603*b1cdbd2cSJim Jagielski                 else if ( eOrientation == com.sun.star.sheet.DataPilotFieldOrientation.ROW )
604*b1cdbd2cSJim Jagielski                     aSettings.aRowDimensions.remove( aDimInt );
605*b1cdbd2cSJim Jagielski                 if ( eNewOrient == com.sun.star.sheet.DataPilotFieldOrientation.COLUMN )
606*b1cdbd2cSJim Jagielski                     aSettings.aColDimensions.add( aDimInt );
607*b1cdbd2cSJim Jagielski                 else if ( eNewOrient == com.sun.star.sheet.DataPilotFieldOrientation.ROW )
608*b1cdbd2cSJim Jagielski                     aSettings.aRowDimensions.add( aDimInt );
609*b1cdbd2cSJim Jagielski 
610*b1cdbd2cSJim Jagielski                 // change orientation
611*b1cdbd2cSJim Jagielski                 eOrientation = eNewOrient;
612*b1cdbd2cSJim Jagielski             }
613*b1cdbd2cSJim Jagielski         }
614*b1cdbd2cSJim Jagielski         else if ( aPropertyName.equals( "Position" ) )
615*b1cdbd2cSJim Jagielski         {
616*b1cdbd2cSJim Jagielski             int nNewPos = ((Integer) aValue).intValue();
617*b1cdbd2cSJim Jagielski             Integer aDimInt = new Integer(nDimension);
618*b1cdbd2cSJim Jagielski             if ( eOrientation == com.sun.star.sheet.DataPilotFieldOrientation.COLUMN )
619*b1cdbd2cSJim Jagielski             {
620*b1cdbd2cSJim Jagielski                 aSettings.aColDimensions.remove( aDimInt );
621*b1cdbd2cSJim Jagielski                 aSettings.aColDimensions.add( nNewPos, aDimInt );
622*b1cdbd2cSJim Jagielski             }
623*b1cdbd2cSJim Jagielski             else if ( eOrientation == com.sun.star.sheet.DataPilotFieldOrientation.ROW )
624*b1cdbd2cSJim Jagielski             {
625*b1cdbd2cSJim Jagielski                 aSettings.aRowDimensions.remove( aDimInt );
626*b1cdbd2cSJim Jagielski                 aSettings.aRowDimensions.add( nNewPos, aDimInt );
627*b1cdbd2cSJim Jagielski             }
628*b1cdbd2cSJim Jagielski         }
629*b1cdbd2cSJim Jagielski         else if ( aPropertyName.equals( "Function" ) || aPropertyName.equals( "UsedHierarchy" ) ||
630*b1cdbd2cSJim Jagielski                   aPropertyName.equals( "Filter" ) )
631*b1cdbd2cSJim Jagielski         {
632*b1cdbd2cSJim Jagielski             // ignored
633*b1cdbd2cSJim Jagielski         }
634*b1cdbd2cSJim Jagielski         else
635*b1cdbd2cSJim Jagielski             throw new com.sun.star.beans.UnknownPropertyException();
636*b1cdbd2cSJim Jagielski     }
637*b1cdbd2cSJim Jagielski 
getPropertyValue( String aPropertyName )638*b1cdbd2cSJim Jagielski     public Object getPropertyValue( String aPropertyName )
639*b1cdbd2cSJim Jagielski                     throws com.sun.star.beans.UnknownPropertyException
640*b1cdbd2cSJim Jagielski     {
641*b1cdbd2cSJim Jagielski         if ( aPropertyName.equals( "Original" ) )
642*b1cdbd2cSJim Jagielski             return null;
643*b1cdbd2cSJim Jagielski         else if ( aPropertyName.equals( "IsDataLayoutDimension" ) )
644*b1cdbd2cSJim Jagielski             return new Boolean( nDimension == ExampleSettings.nDataDimension );
645*b1cdbd2cSJim Jagielski         else if ( aPropertyName.equals( "Orientation" ) )
646*b1cdbd2cSJim Jagielski             return eOrientation;
647*b1cdbd2cSJim Jagielski         else if ( aPropertyName.equals( "Position" ) )
648*b1cdbd2cSJim Jagielski         {
649*b1cdbd2cSJim Jagielski             int nPosition;
650*b1cdbd2cSJim Jagielski             if ( eOrientation == com.sun.star.sheet.DataPilotFieldOrientation.COLUMN )
651*b1cdbd2cSJim Jagielski                 nPosition = aSettings.aColDimensions.indexOf( new Integer(nDimension) );
652*b1cdbd2cSJim Jagielski             else if ( eOrientation == com.sun.star.sheet.DataPilotFieldOrientation.ROW )
653*b1cdbd2cSJim Jagielski                 nPosition = aSettings.aRowDimensions.indexOf( new Integer(nDimension) );
654*b1cdbd2cSJim Jagielski             else
655*b1cdbd2cSJim Jagielski                 nPosition = nDimension;
656*b1cdbd2cSJim Jagielski             return new Integer( nPosition );
657*b1cdbd2cSJim Jagielski         }
658*b1cdbd2cSJim Jagielski         else if ( aPropertyName.equals( "Function" ) )
659*b1cdbd2cSJim Jagielski             return com.sun.star.sheet.GeneralFunction.SUM;
660*b1cdbd2cSJim Jagielski         else if ( aPropertyName.equals( "UsedHierarchy" ) )
661*b1cdbd2cSJim Jagielski             return new Integer(0);
662*b1cdbd2cSJim Jagielski         else if ( aPropertyName.equals( "Filter" ) )
663*b1cdbd2cSJim Jagielski             return new com.sun.star.sheet.TableFilterField[0];
664*b1cdbd2cSJim Jagielski         else
665*b1cdbd2cSJim Jagielski             throw new com.sun.star.beans.UnknownPropertyException();
666*b1cdbd2cSJim Jagielski     }
667*b1cdbd2cSJim Jagielski 
addPropertyChangeListener( String aPropertyName, com.sun.star.beans.XPropertyChangeListener xListener)668*b1cdbd2cSJim Jagielski     public void addPropertyChangeListener(
669*b1cdbd2cSJim Jagielski         String aPropertyName, com.sun.star.beans.XPropertyChangeListener xListener)
670*b1cdbd2cSJim Jagielski     {
671*b1cdbd2cSJim Jagielski     }
removePropertyChangeListener( String aPropertyName, com.sun.star.beans.XPropertyChangeListener aListener)672*b1cdbd2cSJim Jagielski     public void removePropertyChangeListener(
673*b1cdbd2cSJim Jagielski         String aPropertyName, com.sun.star.beans.XPropertyChangeListener aListener)
674*b1cdbd2cSJim Jagielski     {
675*b1cdbd2cSJim Jagielski     }
addVetoableChangeListener( String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener)676*b1cdbd2cSJim Jagielski     public void addVetoableChangeListener(
677*b1cdbd2cSJim Jagielski         String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener)
678*b1cdbd2cSJim Jagielski     {
679*b1cdbd2cSJim Jagielski     }
removeVetoableChangeListener( String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener)680*b1cdbd2cSJim Jagielski     public void removeVetoableChangeListener(
681*b1cdbd2cSJim Jagielski         String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener)
682*b1cdbd2cSJim Jagielski     {
683*b1cdbd2cSJim Jagielski     }
684*b1cdbd2cSJim Jagielski }
685*b1cdbd2cSJim Jagielski 
686*b1cdbd2cSJim Jagielski //  implementation of com.sun.star.sheet.DataPilotSourceDimensions
687*b1cdbd2cSJim Jagielski 
688*b1cdbd2cSJim Jagielski class ExampleDimensions implements com.sun.star.container.XNameAccess
689*b1cdbd2cSJim Jagielski {
690*b1cdbd2cSJim Jagielski     private ExampleSettings aSettings;
691*b1cdbd2cSJim Jagielski     private ExampleDimension[] aDimensions;
692*b1cdbd2cSJim Jagielski 
ExampleDimensions( ExampleSettings aSet )693*b1cdbd2cSJim Jagielski     public ExampleDimensions( ExampleSettings aSet )
694*b1cdbd2cSJim Jagielski     {
695*b1cdbd2cSJim Jagielski         aSettings = aSet;
696*b1cdbd2cSJim Jagielski     }
697*b1cdbd2cSJim Jagielski 
698*b1cdbd2cSJim Jagielski     //  XNameAccess
699*b1cdbd2cSJim Jagielski 
getElementType()700*b1cdbd2cSJim Jagielski     public com.sun.star.uno.Type getElementType()
701*b1cdbd2cSJim Jagielski     {
702*b1cdbd2cSJim Jagielski         return new com.sun.star.uno.Type( com.sun.star.container.XNamed.class );
703*b1cdbd2cSJim Jagielski     }
704*b1cdbd2cSJim Jagielski 
hasElements()705*b1cdbd2cSJim Jagielski     public boolean hasElements()
706*b1cdbd2cSJim Jagielski     {
707*b1cdbd2cSJim Jagielski         return true;    // always has elements
708*b1cdbd2cSJim Jagielski     }
709*b1cdbd2cSJim Jagielski 
getByName( String aName )710*b1cdbd2cSJim Jagielski     public Object getByName( String aName )
711*b1cdbd2cSJim Jagielski         throws com.sun.star.container.NoSuchElementException
712*b1cdbd2cSJim Jagielski     {
713*b1cdbd2cSJim Jagielski         for (int i=0; i<ExampleSettings.nDimensionCount; i++)
714*b1cdbd2cSJim Jagielski             if ( aName.equals( ExampleSettings.aDimensionNames[i] ) )
715*b1cdbd2cSJim Jagielski             {
716*b1cdbd2cSJim Jagielski                 if ( aDimensions == null )
717*b1cdbd2cSJim Jagielski                     aDimensions = new ExampleDimension[ ExampleSettings.nDimensionCount ];
718*b1cdbd2cSJim Jagielski                 if ( aDimensions[i] == null )
719*b1cdbd2cSJim Jagielski                     aDimensions[i] = new ExampleDimension( aSettings, i );
720*b1cdbd2cSJim Jagielski                 return aDimensions[i];
721*b1cdbd2cSJim Jagielski             }
722*b1cdbd2cSJim Jagielski         throw new com.sun.star.container.NoSuchElementException();
723*b1cdbd2cSJim Jagielski     }
724*b1cdbd2cSJim Jagielski 
getElementNames()725*b1cdbd2cSJim Jagielski     public String[] getElementNames()
726*b1cdbd2cSJim Jagielski     {
727*b1cdbd2cSJim Jagielski         String [] aNames = new String[ ExampleSettings.nDimensionCount ];
728*b1cdbd2cSJim Jagielski         for (int i=0; i<ExampleSettings.nDimensionCount; i++)
729*b1cdbd2cSJim Jagielski             aNames[ i ] = ExampleSettings.aDimensionNames[i];
730*b1cdbd2cSJim Jagielski         return aNames;
731*b1cdbd2cSJim Jagielski     }
732*b1cdbd2cSJim Jagielski 
hasByName( String aName )733*b1cdbd2cSJim Jagielski     public boolean hasByName( String aName )
734*b1cdbd2cSJim Jagielski     {
735*b1cdbd2cSJim Jagielski         for (int i=0; i<ExampleSettings.nDimensionCount; i++)
736*b1cdbd2cSJim Jagielski             if ( aName.equals( ExampleSettings.aDimensionNames[i] ) )
737*b1cdbd2cSJim Jagielski                 return true;
738*b1cdbd2cSJim Jagielski         return false;
739*b1cdbd2cSJim Jagielski     }
740*b1cdbd2cSJim Jagielski }
741*b1cdbd2cSJim Jagielski 
742*b1cdbd2cSJim Jagielski //  outer class for service implementation
743*b1cdbd2cSJim Jagielski 
744*b1cdbd2cSJim Jagielski public class ExampleDataPilotSource
745*b1cdbd2cSJim Jagielski {
746*b1cdbd2cSJim Jagielski     //  implementation of com.sun.star.sheet.DataPilotSource
747*b1cdbd2cSJim Jagielski 
748*b1cdbd2cSJim Jagielski     static public class _ExampleDataPilotSource implements
749*b1cdbd2cSJim Jagielski                         com.sun.star.sheet.XDimensionsSupplier,
750*b1cdbd2cSJim Jagielski                         com.sun.star.sheet.XDataPilotResults,
751*b1cdbd2cSJim Jagielski                         com.sun.star.util.XRefreshable,
752*b1cdbd2cSJim Jagielski                         com.sun.star.beans.XPropertySet,
753*b1cdbd2cSJim Jagielski                         com.sun.star.lang.XInitialization,
754*b1cdbd2cSJim Jagielski                         com.sun.star.lang.XServiceInfo
755*b1cdbd2cSJim Jagielski     {
756*b1cdbd2cSJim Jagielski         static private final String aServiceName = "com.sun.star.sheet.DataPilotSource";
757*b1cdbd2cSJim Jagielski         static private final String aImplName =  _ExampleDataPilotSource.class.getName();
758*b1cdbd2cSJim Jagielski 
759*b1cdbd2cSJim Jagielski         private ExampleSettings aSettings = new ExampleSettings();
760*b1cdbd2cSJim Jagielski         private ExampleDimensions aDimensions;
761*b1cdbd2cSJim Jagielski 
_ExampleDataPilotSource( com.sun.star.lang.XMultiServiceFactory xFactory )762*b1cdbd2cSJim Jagielski         public _ExampleDataPilotSource( com.sun.star.lang.XMultiServiceFactory xFactory )
763*b1cdbd2cSJim Jagielski         {
764*b1cdbd2cSJim Jagielski         }
765*b1cdbd2cSJim Jagielski 
766*b1cdbd2cSJim Jagielski         //  XInitialization
767*b1cdbd2cSJim Jagielski 
initialize( Object[] aArguments )768*b1cdbd2cSJim Jagielski         public void initialize( Object[] aArguments )
769*b1cdbd2cSJim Jagielski         {
770*b1cdbd2cSJim Jagielski             //  If the first argument (Source) is a number between 2 and 10,
771*b1cdbd2cSJim Jagielski             //  use it as member count, otherwise keep the default value.
772*b1cdbd2cSJim Jagielski             try
773*b1cdbd2cSJim Jagielski             {
774*b1cdbd2cSJim Jagielski 		if ( aArguments.length >= 1 )
775*b1cdbd2cSJim Jagielski 		{
776*b1cdbd2cSJim Jagielski 		    String aSource = com.sun.star.uno.AnyConverter.toString(aArguments[0]);
777*b1cdbd2cSJim Jagielski 		    if ( aSource != null && aSource.length() > 0)
778*b1cdbd2cSJim Jagielski 		    {
779*b1cdbd2cSJim Jagielski 			int nValue = Integer.parseInt( aSource );
780*b1cdbd2cSJim Jagielski 			if ( nValue >= 2 && nValue <= 10 )
781*b1cdbd2cSJim Jagielski 			    aSettings.nMemberCount = nValue;
782*b1cdbd2cSJim Jagielski 		    }
783*b1cdbd2cSJim Jagielski 		}
784*b1cdbd2cSJim Jagielski 	    }
785*b1cdbd2cSJim Jagielski 	    catch ( NumberFormatException e )
786*b1cdbd2cSJim Jagielski 	    {
787*b1cdbd2cSJim Jagielski 		System.out.println( "Error: caught exception in " +
788*b1cdbd2cSJim Jagielski 				    "ExampleDataPilotSource.initialize!\nException Message = "
789*b1cdbd2cSJim Jagielski 				    + e.getMessage());
790*b1cdbd2cSJim Jagielski 		e.printStackTrace();
791*b1cdbd2cSJim Jagielski 	    }
792*b1cdbd2cSJim Jagielski 	    catch ( com.sun.star.lang.IllegalArgumentException e )
793*b1cdbd2cSJim Jagielski 	    {
794*b1cdbd2cSJim Jagielski 		System.out.println( "Error: caught exception in " +
795*b1cdbd2cSJim Jagielski 				    "ExampleDataPilotSource.initialize!\nException Message = "
796*b1cdbd2cSJim Jagielski 				    + e.getMessage());
797*b1cdbd2cSJim Jagielski 		e.printStackTrace();
798*b1cdbd2cSJim Jagielski 	    }
799*b1cdbd2cSJim Jagielski         }
800*b1cdbd2cSJim Jagielski 
801*b1cdbd2cSJim Jagielski         //  XDataPilotResults
802*b1cdbd2cSJim Jagielski 
getResults()803*b1cdbd2cSJim Jagielski         public com.sun.star.sheet.DataResult[][] getResults()
804*b1cdbd2cSJim Jagielski         {
805*b1cdbd2cSJim Jagielski             int[] nDigits = new int[ExampleSettings.nDimensionCount];
806*b1cdbd2cSJim Jagielski             int nValue = 1;
807*b1cdbd2cSJim Jagielski             for (int i=0; i<ExampleSettings.nDimensionCount; i++)
808*b1cdbd2cSJim Jagielski             {
809*b1cdbd2cSJim Jagielski                 nDigits[i] = nValue;
810*b1cdbd2cSJim Jagielski                 nValue *= 10;
811*b1cdbd2cSJim Jagielski             }
812*b1cdbd2cSJim Jagielski 
813*b1cdbd2cSJim Jagielski             int nMemberCount = aSettings.nMemberCount;
814*b1cdbd2cSJim Jagielski             int nRowDimCount = aSettings.aRowDimensions.size();
815*b1cdbd2cSJim Jagielski             int nColDimCount = aSettings.aColDimensions.size();
816*b1cdbd2cSJim Jagielski 
817*b1cdbd2cSJim Jagielski             int nRows = 1;
818*b1cdbd2cSJim Jagielski             for (int i=0; i<nRowDimCount; i++)
819*b1cdbd2cSJim Jagielski                 nRows *= nMemberCount;
820*b1cdbd2cSJim Jagielski             int nColumns = 1;
821*b1cdbd2cSJim Jagielski             for (int i=0; i<nColDimCount; i++)
822*b1cdbd2cSJim Jagielski                 nColumns *= nMemberCount;
823*b1cdbd2cSJim Jagielski 
824*b1cdbd2cSJim Jagielski             com.sun.star.sheet.DataResult[][] aResults = new com.sun.star.sheet.DataResult[nRows][];
825*b1cdbd2cSJim Jagielski             for (int nRow=0; nRow<nRows; nRow++)
826*b1cdbd2cSJim Jagielski             {
827*b1cdbd2cSJim Jagielski                 int nRowVal = nRow;
828*b1cdbd2cSJim Jagielski                 int nRowResult = 0;
829*b1cdbd2cSJim Jagielski                 for (int nRowDim=0; nRowDim<nRowDimCount; nRowDim++)
830*b1cdbd2cSJim Jagielski                 {
831*b1cdbd2cSJim Jagielski                     int nDim = ((Integer)aSettings.aRowDimensions.get(nRowDimCount-nRowDim-1)).intValue();
832*b1cdbd2cSJim Jagielski                     nRowResult += ( nRowVal % nMemberCount ) * nDigits[nDim];
833*b1cdbd2cSJim Jagielski                     nRowVal /= nMemberCount;
834*b1cdbd2cSJim Jagielski                 }
835*b1cdbd2cSJim Jagielski 
836*b1cdbd2cSJim Jagielski                 aResults[nRow] = new com.sun.star.sheet.DataResult[nColumns];
837*b1cdbd2cSJim Jagielski                 for (int nCol=0; nCol<nColumns; nCol++)
838*b1cdbd2cSJim Jagielski                 {
839*b1cdbd2cSJim Jagielski                     int nColVal = nCol;
840*b1cdbd2cSJim Jagielski                     int nResult = nRowResult;
841*b1cdbd2cSJim Jagielski                     for (int nColDim=0; nColDim<nColDimCount; nColDim++)
842*b1cdbd2cSJim Jagielski                     {
843*b1cdbd2cSJim Jagielski                         int nDim = ((Integer)aSettings.aColDimensions.get(nColDimCount-nColDim-1)).intValue();
844*b1cdbd2cSJim Jagielski                         nResult += ( nColVal % nMemberCount ) * nDigits[nDim];
845*b1cdbd2cSJim Jagielski                         nColVal /= nMemberCount;
846*b1cdbd2cSJim Jagielski                     }
847*b1cdbd2cSJim Jagielski 
848*b1cdbd2cSJim Jagielski                     aResults[nRow][nCol] = new com.sun.star.sheet.DataResult();
849*b1cdbd2cSJim Jagielski                     aResults[nRow][nCol].Flags = com.sun.star.sheet.DataResultFlags.HASDATA;
850*b1cdbd2cSJim Jagielski                     aResults[nRow][nCol].Value = nResult;
851*b1cdbd2cSJim Jagielski                 }
852*b1cdbd2cSJim Jagielski             }
853*b1cdbd2cSJim Jagielski             return aResults;
854*b1cdbd2cSJim Jagielski         }
855*b1cdbd2cSJim Jagielski 
856*b1cdbd2cSJim Jagielski         //  XDimensionsSupplier
857*b1cdbd2cSJim Jagielski 
getDimensions()858*b1cdbd2cSJim Jagielski         public com.sun.star.container.XNameAccess getDimensions()
859*b1cdbd2cSJim Jagielski         {
860*b1cdbd2cSJim Jagielski             if ( aDimensions == null )
861*b1cdbd2cSJim Jagielski                 aDimensions = new ExampleDimensions( aSettings );
862*b1cdbd2cSJim Jagielski             return aDimensions;
863*b1cdbd2cSJim Jagielski         }
864*b1cdbd2cSJim Jagielski 
865*b1cdbd2cSJim Jagielski         //  XPropertySet
866*b1cdbd2cSJim Jagielski 
getPropertySetInfo()867*b1cdbd2cSJim Jagielski         public com.sun.star.beans.XPropertySetInfo getPropertySetInfo()
868*b1cdbd2cSJim Jagielski         {
869*b1cdbd2cSJim Jagielski             return new ExamplePropertySetInfo( new com.sun.star.beans.Property[] {
870*b1cdbd2cSJim Jagielski                 new com.sun.star.beans.Property( "ColumnGrand", -1,
871*b1cdbd2cSJim Jagielski                        new com.sun.star.uno.Type( Boolean.class ), (short) 0),
872*b1cdbd2cSJim Jagielski                 new com.sun.star.beans.Property( "RowGrand", -1,
873*b1cdbd2cSJim Jagielski                        new com.sun.star.uno.Type( Boolean.class ), (short) 0) });
874*b1cdbd2cSJim Jagielski         }
875*b1cdbd2cSJim Jagielski 
setPropertyValue( String aPropertyName, Object aValue )876*b1cdbd2cSJim Jagielski         public void setPropertyValue( String aPropertyName, Object aValue )
877*b1cdbd2cSJim Jagielski             throws com.sun.star.beans.UnknownPropertyException
878*b1cdbd2cSJim Jagielski         {
879*b1cdbd2cSJim Jagielski             if ( aPropertyName.equals( "ColumnGrand" ) ||
880*b1cdbd2cSJim Jagielski                  aPropertyName.equals( "RowGrand" ) )
881*b1cdbd2cSJim Jagielski             {
882*b1cdbd2cSJim Jagielski                 // ignored
883*b1cdbd2cSJim Jagielski             }
884*b1cdbd2cSJim Jagielski             else
885*b1cdbd2cSJim Jagielski                 throw new com.sun.star.beans.UnknownPropertyException();
886*b1cdbd2cSJim Jagielski         }
887*b1cdbd2cSJim Jagielski 
getPropertyValue( String aPropertyName )888*b1cdbd2cSJim Jagielski         public Object getPropertyValue( String aPropertyName )
889*b1cdbd2cSJim Jagielski             throws com.sun.star.beans.UnknownPropertyException
890*b1cdbd2cSJim Jagielski         {
891*b1cdbd2cSJim Jagielski             if ( aPropertyName.equals( "ColumnGrand" ) ||
892*b1cdbd2cSJim Jagielski                  aPropertyName.equals( "RowGrand" ) )
893*b1cdbd2cSJim Jagielski             {
894*b1cdbd2cSJim Jagielski                 return new Boolean( false );        // always false
895*b1cdbd2cSJim Jagielski             }
896*b1cdbd2cSJim Jagielski             else
897*b1cdbd2cSJim Jagielski                 throw new com.sun.star.beans.UnknownPropertyException();
898*b1cdbd2cSJim Jagielski         }
899*b1cdbd2cSJim Jagielski 
addPropertyChangeListener( String aPropertyName, com.sun.star.beans.XPropertyChangeListener xListener )900*b1cdbd2cSJim Jagielski         public void addPropertyChangeListener(
901*b1cdbd2cSJim Jagielski             String aPropertyName,
902*b1cdbd2cSJim Jagielski             com.sun.star.beans.XPropertyChangeListener xListener )
903*b1cdbd2cSJim Jagielski         {
904*b1cdbd2cSJim Jagielski         }
removePropertyChangeListener( String aPropertyName, com.sun.star.beans.XPropertyChangeListener aListener )905*b1cdbd2cSJim Jagielski         public void removePropertyChangeListener(
906*b1cdbd2cSJim Jagielski             String aPropertyName,
907*b1cdbd2cSJim Jagielski             com.sun.star.beans.XPropertyChangeListener aListener )
908*b1cdbd2cSJim Jagielski         {
909*b1cdbd2cSJim Jagielski         }
addVetoableChangeListener( String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener )910*b1cdbd2cSJim Jagielski         public void addVetoableChangeListener(
911*b1cdbd2cSJim Jagielski             String PropertyName,
912*b1cdbd2cSJim Jagielski             com.sun.star.beans.XVetoableChangeListener aListener )
913*b1cdbd2cSJim Jagielski         {
914*b1cdbd2cSJim Jagielski         }
removeVetoableChangeListener( String PropertyName, com.sun.star.beans.XVetoableChangeListener aListener )915*b1cdbd2cSJim Jagielski         public void removeVetoableChangeListener(
916*b1cdbd2cSJim Jagielski             String PropertyName,
917*b1cdbd2cSJim Jagielski             com.sun.star.beans.XVetoableChangeListener aListener )
918*b1cdbd2cSJim Jagielski         {
919*b1cdbd2cSJim Jagielski         }
920*b1cdbd2cSJim Jagielski 
921*b1cdbd2cSJim Jagielski         //  XRefreshable
922*b1cdbd2cSJim Jagielski 
refresh()923*b1cdbd2cSJim Jagielski         public void refresh()
924*b1cdbd2cSJim Jagielski         {
925*b1cdbd2cSJim Jagielski         }
addRefreshListener( com.sun.star.util.XRefreshListener l )926*b1cdbd2cSJim Jagielski         public void addRefreshListener( com.sun.star.util.XRefreshListener l )
927*b1cdbd2cSJim Jagielski         {
928*b1cdbd2cSJim Jagielski         }
removeRefreshListener( com.sun.star.util.XRefreshListener l )929*b1cdbd2cSJim Jagielski         public void removeRefreshListener( com.sun.star.util.XRefreshListener l )
930*b1cdbd2cSJim Jagielski         {
931*b1cdbd2cSJim Jagielski         }
932*b1cdbd2cSJim Jagielski 
933*b1cdbd2cSJim Jagielski         //  XServiceInfo
934*b1cdbd2cSJim Jagielski 
getImplementationName()935*b1cdbd2cSJim Jagielski         public String getImplementationName()
936*b1cdbd2cSJim Jagielski         {
937*b1cdbd2cSJim Jagielski             return aImplName;
938*b1cdbd2cSJim Jagielski         }
939*b1cdbd2cSJim Jagielski 
getSupportedServiceNames()940*b1cdbd2cSJim Jagielski         public String[] getSupportedServiceNames()
941*b1cdbd2cSJim Jagielski         {
942*b1cdbd2cSJim Jagielski             String [] aSupportedServices = new String[ 1 ];
943*b1cdbd2cSJim Jagielski             aSupportedServices[ 0 ] = aServiceName;
944*b1cdbd2cSJim Jagielski             return aSupportedServices;
945*b1cdbd2cSJim Jagielski         }
946*b1cdbd2cSJim Jagielski 
supportsService( String aService )947*b1cdbd2cSJim Jagielski         public boolean supportsService( String aService )
948*b1cdbd2cSJim Jagielski         {
949*b1cdbd2cSJim Jagielski             return aService.equals( aServiceName );
950*b1cdbd2cSJim Jagielski         }
951*b1cdbd2cSJim Jagielski     }
952*b1cdbd2cSJim Jagielski 
__getServiceFactory( String implName, com.sun.star.lang.XMultiServiceFactory multiFactory, com.sun.star.registry.XRegistryKey regKey)953*b1cdbd2cSJim Jagielski     public static com.sun.star.lang.XSingleServiceFactory __getServiceFactory(
954*b1cdbd2cSJim Jagielski         String implName,
955*b1cdbd2cSJim Jagielski         com.sun.star.lang.XMultiServiceFactory multiFactory,
956*b1cdbd2cSJim Jagielski         com.sun.star.registry.XRegistryKey regKey)
957*b1cdbd2cSJim Jagielski     {
958*b1cdbd2cSJim Jagielski         com.sun.star.lang.XSingleServiceFactory xSingleServiceFactory = null;
959*b1cdbd2cSJim Jagielski 
960*b1cdbd2cSJim Jagielski         if ( implName.equals(_ExampleDataPilotSource.aImplName) )
961*b1cdbd2cSJim Jagielski             xSingleServiceFactory =
962*b1cdbd2cSJim Jagielski                 com.sun.star.comp.loader.FactoryHelper.getServiceFactory(
963*b1cdbd2cSJim Jagielski                     _ExampleDataPilotSource.class,
964*b1cdbd2cSJim Jagielski                     _ExampleDataPilotSource.aServiceName, multiFactory, regKey);
965*b1cdbd2cSJim Jagielski 
966*b1cdbd2cSJim Jagielski         return xSingleServiceFactory;
967*b1cdbd2cSJim Jagielski     }
968*b1cdbd2cSJim Jagielski 
969*b1cdbd2cSJim Jagielski     // This method not longer necessary since OOo 3.4 where the component registration
970*b1cdbd2cSJim Jagielski     // was changed to passive component registration. For more details see
971*b1cdbd2cSJim Jagielski     // http://wiki.services.openoffice.org/wiki/Passive_Component_Registration
972*b1cdbd2cSJim Jagielski 
973*b1cdbd2cSJim Jagielski //     public static boolean __writeRegistryServiceInfo(
974*b1cdbd2cSJim Jagielski //         com.sun.star.registry.XRegistryKey regKey)
975*b1cdbd2cSJim Jagielski //     {
976*b1cdbd2cSJim Jagielski //         return com.sun.star.comp.loader.FactoryHelper.writeRegistryServiceInfo(
977*b1cdbd2cSJim Jagielski //                     _ExampleDataPilotSource.aImplName,
978*b1cdbd2cSJim Jagielski //                     _ExampleDataPilotSource.aServiceName, regKey);
979*b1cdbd2cSJim Jagielski //     }
980*b1cdbd2cSJim Jagielski }
981*b1cdbd2cSJim Jagielski 
982