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 // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_ucb.hxx"
26*b1cdbd2cSJim Jagielski #include "filid.hxx"
27*b1cdbd2cSJim Jagielski #include "shell.hxx"
28*b1cdbd2cSJim Jagielski
29*b1cdbd2cSJim Jagielski using namespace fileaccess;
30*b1cdbd2cSJim Jagielski using namespace com::sun::star;
31*b1cdbd2cSJim Jagielski using namespace com::sun::star::ucb;
32*b1cdbd2cSJim Jagielski
33*b1cdbd2cSJim Jagielski
FileContentIdentifier(shell * pMyShell,const rtl::OUString & aUnqPath,sal_Bool IsNormalized)34*b1cdbd2cSJim Jagielski FileContentIdentifier::FileContentIdentifier(
35*b1cdbd2cSJim Jagielski shell* pMyShell,
36*b1cdbd2cSJim Jagielski const rtl::OUString& aUnqPath,
37*b1cdbd2cSJim Jagielski sal_Bool IsNormalized )
38*b1cdbd2cSJim Jagielski : m_pMyShell( pMyShell ),
39*b1cdbd2cSJim Jagielski m_bNormalized( IsNormalized )
40*b1cdbd2cSJim Jagielski {
41*b1cdbd2cSJim Jagielski if( IsNormalized )
42*b1cdbd2cSJim Jagielski {
43*b1cdbd2cSJim Jagielski m_pMyShell->getUrlFromUnq( aUnqPath,m_aContentId );
44*b1cdbd2cSJim Jagielski m_aNormalizedId = aUnqPath;
45*b1cdbd2cSJim Jagielski m_pMyShell->getScheme( m_aProviderScheme );
46*b1cdbd2cSJim Jagielski }
47*b1cdbd2cSJim Jagielski else
48*b1cdbd2cSJim Jagielski {
49*b1cdbd2cSJim Jagielski m_pMyShell->getUnqFromUrl( aUnqPath,m_aNormalizedId );
50*b1cdbd2cSJim Jagielski m_aContentId = aUnqPath;
51*b1cdbd2cSJim Jagielski m_pMyShell->getScheme( m_aProviderScheme );
52*b1cdbd2cSJim Jagielski }
53*b1cdbd2cSJim Jagielski }
54*b1cdbd2cSJim Jagielski
~FileContentIdentifier()55*b1cdbd2cSJim Jagielski FileContentIdentifier::~FileContentIdentifier()
56*b1cdbd2cSJim Jagielski {
57*b1cdbd2cSJim Jagielski }
58*b1cdbd2cSJim Jagielski
59*b1cdbd2cSJim Jagielski
60*b1cdbd2cSJim Jagielski void SAL_CALL
acquire(void)61*b1cdbd2cSJim Jagielski FileContentIdentifier::acquire(
62*b1cdbd2cSJim Jagielski void )
63*b1cdbd2cSJim Jagielski throw()
64*b1cdbd2cSJim Jagielski {
65*b1cdbd2cSJim Jagielski OWeakObject::acquire();
66*b1cdbd2cSJim Jagielski }
67*b1cdbd2cSJim Jagielski
68*b1cdbd2cSJim Jagielski
69*b1cdbd2cSJim Jagielski void SAL_CALL
release(void)70*b1cdbd2cSJim Jagielski FileContentIdentifier::release(
71*b1cdbd2cSJim Jagielski void )
72*b1cdbd2cSJim Jagielski throw()
73*b1cdbd2cSJim Jagielski {
74*b1cdbd2cSJim Jagielski OWeakObject::release();
75*b1cdbd2cSJim Jagielski }
76*b1cdbd2cSJim Jagielski
77*b1cdbd2cSJim Jagielski
78*b1cdbd2cSJim Jagielski uno::Any SAL_CALL
queryInterface(const uno::Type & rType)79*b1cdbd2cSJim Jagielski FileContentIdentifier::queryInterface(
80*b1cdbd2cSJim Jagielski const uno::Type& rType )
81*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
82*b1cdbd2cSJim Jagielski {
83*b1cdbd2cSJim Jagielski uno::Any aRet = cppu::queryInterface( rType,
84*b1cdbd2cSJim Jagielski SAL_STATIC_CAST( lang::XTypeProvider*, this),
85*b1cdbd2cSJim Jagielski SAL_STATIC_CAST( XContentIdentifier*, this) );
86*b1cdbd2cSJim Jagielski return aRet.hasValue() ? aRet : OWeakObject::queryInterface( rType );
87*b1cdbd2cSJim Jagielski }
88*b1cdbd2cSJim Jagielski
89*b1cdbd2cSJim Jagielski
90*b1cdbd2cSJim Jagielski uno::Sequence< sal_Int8 > SAL_CALL
getImplementationId()91*b1cdbd2cSJim Jagielski FileContentIdentifier::getImplementationId()
92*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
93*b1cdbd2cSJim Jagielski {
94*b1cdbd2cSJim Jagielski static cppu::OImplementationId* pId = NULL;
95*b1cdbd2cSJim Jagielski if ( !pId )
96*b1cdbd2cSJim Jagielski {
97*b1cdbd2cSJim Jagielski osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
98*b1cdbd2cSJim Jagielski if ( !pId )
99*b1cdbd2cSJim Jagielski {
100*b1cdbd2cSJim Jagielski static cppu::OImplementationId id( sal_False );
101*b1cdbd2cSJim Jagielski pId = &id;
102*b1cdbd2cSJim Jagielski }
103*b1cdbd2cSJim Jagielski }
104*b1cdbd2cSJim Jagielski return (*pId).getImplementationId();
105*b1cdbd2cSJim Jagielski }
106*b1cdbd2cSJim Jagielski
107*b1cdbd2cSJim Jagielski
108*b1cdbd2cSJim Jagielski uno::Sequence< uno::Type > SAL_CALL
getTypes(void)109*b1cdbd2cSJim Jagielski FileContentIdentifier::getTypes(
110*b1cdbd2cSJim Jagielski void )
111*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
112*b1cdbd2cSJim Jagielski {
113*b1cdbd2cSJim Jagielski static cppu::OTypeCollection* pCollection = NULL;
114*b1cdbd2cSJim Jagielski if ( !pCollection ) {
115*b1cdbd2cSJim Jagielski osl::Guard< osl::Mutex > aGuard( osl::Mutex::getGlobalMutex() );
116*b1cdbd2cSJim Jagielski if ( !pCollection )
117*b1cdbd2cSJim Jagielski {
118*b1cdbd2cSJim Jagielski static cppu::OTypeCollection collection(
119*b1cdbd2cSJim Jagielski getCppuType( static_cast< uno::Reference< lang::XTypeProvider >* >( 0 ) ),
120*b1cdbd2cSJim Jagielski getCppuType( static_cast< uno::Reference< XContentIdentifier >* >( 0 ) ) );
121*b1cdbd2cSJim Jagielski pCollection = &collection;
122*b1cdbd2cSJim Jagielski }
123*b1cdbd2cSJim Jagielski }
124*b1cdbd2cSJim Jagielski return (*pCollection).getTypes();
125*b1cdbd2cSJim Jagielski }
126*b1cdbd2cSJim Jagielski
127*b1cdbd2cSJim Jagielski
128*b1cdbd2cSJim Jagielski rtl::OUString
129*b1cdbd2cSJim Jagielski SAL_CALL
getContentIdentifier(void)130*b1cdbd2cSJim Jagielski FileContentIdentifier::getContentIdentifier(
131*b1cdbd2cSJim Jagielski void )
132*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
133*b1cdbd2cSJim Jagielski {
134*b1cdbd2cSJim Jagielski return m_aContentId;
135*b1cdbd2cSJim Jagielski }
136*b1cdbd2cSJim Jagielski
137*b1cdbd2cSJim Jagielski
138*b1cdbd2cSJim Jagielski rtl::OUString SAL_CALL
getContentProviderScheme(void)139*b1cdbd2cSJim Jagielski FileContentIdentifier::getContentProviderScheme(
140*b1cdbd2cSJim Jagielski void )
141*b1cdbd2cSJim Jagielski throw( uno::RuntimeException )
142*b1cdbd2cSJim Jagielski {
143*b1cdbd2cSJim Jagielski return m_aProviderScheme;
144*b1cdbd2cSJim Jagielski }
145