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 com.sun.star.report;
24*b1cdbd2cSJim Jagielski 
25*b1cdbd2cSJim Jagielski import java.io.IOException;
26*b1cdbd2cSJim Jagielski import java.io.InputStream;
27*b1cdbd2cSJim Jagielski 
28*b1cdbd2cSJim Jagielski /**
29*b1cdbd2cSJim Jagielski  * This allows the job processor to load data from a repository. It is assumed,
30*b1cdbd2cSJim Jagielski  * that all resource names are given as strings and furthermore, that the names
31*b1cdbd2cSJim Jagielski  * identify a resource uniquely within the input repository.
32*b1cdbd2cSJim Jagielski  *
33*b1cdbd2cSJim Jagielski  * An input repository connects the report processing to the xml definitions.
34*b1cdbd2cSJim Jagielski  * Unless defined otherwise, it is assumed, that the input-name is 'content.xml';
35*b1cdbd2cSJim Jagielski  * possible other files are 'settings.xml' and 'styles.xml' (see the Oasis standard
36*b1cdbd2cSJim Jagielski  * for details on these files and their contents).
37*b1cdbd2cSJim Jagielski  *
38*b1cdbd2cSJim Jagielski  * @author Thomas Morgner
39*b1cdbd2cSJim Jagielski  */
40*b1cdbd2cSJim Jagielski public interface InputRepository
41*b1cdbd2cSJim Jagielski {
42*b1cdbd2cSJim Jagielski 
43*b1cdbd2cSJim Jagielski     /**
44*b1cdbd2cSJim Jagielski      * Returns a unique identifier for this repository. Two repositories accessing
45*b1cdbd2cSJim Jagielski      * the same location should return the same id. The identifier must never
46*b1cdbd2cSJim Jagielski      * be null.
47*b1cdbd2cSJim Jagielski      *
48*b1cdbd2cSJim Jagielski      * @return the repository id
49*b1cdbd2cSJim Jagielski      */
getId()50*b1cdbd2cSJim Jagielski     Object getId();
51*b1cdbd2cSJim Jagielski 
createInputStream(final String name)52*b1cdbd2cSJim Jagielski     InputStream createInputStream(final String name) throws IOException;
53*b1cdbd2cSJim Jagielski 
54*b1cdbd2cSJim Jagielski     /** allows to acces sub repositories inside this repository
55*b1cdbd2cSJim Jagielski      *
56*b1cdbd2cSJim Jagielski      * @param name describes the path to the sub repository
57*b1cdbd2cSJim Jagielski      * @return the sub repository
58*b1cdbd2cSJim Jagielski      * @throws java.io.IOException when the sub repository doesn't exist.
59*b1cdbd2cSJim Jagielski      */
openInputRepository(final String name)60*b1cdbd2cSJim Jagielski     InputRepository openInputRepository(final String name) throws IOException;
61*b1cdbd2cSJim Jagielski 
62*b1cdbd2cSJim Jagielski     /**
63*b1cdbd2cSJim Jagielski      * This returns an version number for the given resource. Return zero, if
64*b1cdbd2cSJim Jagielski      * the resource is not versionable, else return a unique number for each version.
65*b1cdbd2cSJim Jagielski      * As rule of thumb: Increase the version number by at least one for each change
66*b1cdbd2cSJim Jagielski      * made to the resource.
67*b1cdbd2cSJim Jagielski      *
68*b1cdbd2cSJim Jagielski      * @param name the name of the resource
69*b1cdbd2cSJim Jagielski      * @return the version number
70*b1cdbd2cSJim Jagielski      */
getVersion(final String name)71*b1cdbd2cSJim Jagielski     long getVersion(final String name);
72*b1cdbd2cSJim Jagielski 
exists(final String name)73*b1cdbd2cSJim Jagielski     boolean exists(final String name);
74*b1cdbd2cSJim Jagielski 
isReadable(final String name)75*b1cdbd2cSJim Jagielski     boolean isReadable(final String name);
76*b1cdbd2cSJim Jagielski 
closeInputRepository()77*b1cdbd2cSJim Jagielski     void closeInputRepository();
78*b1cdbd2cSJim Jagielski 
79*b1cdbd2cSJim Jagielski     /** returns the URL of the database document
80*b1cdbd2cSJim Jagielski      *
81*b1cdbd2cSJim Jagielski      * @return the URL of the database document
82*b1cdbd2cSJim Jagielski      */
getRootURL()83*b1cdbd2cSJim Jagielski     String getRootURL();
84*b1cdbd2cSJim Jagielski }
85