xref: /aoo4110/main/ucb/source/ucp/file/filid.cxx (revision b1cdbd2c)
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