1 package org.apache.archiva.repository;
2
3 /*
4 * Licensed to the Apache Software Foundation (ASF) under one
5 * or more contributor license agreements. See the NOTICE file
6 * distributed with this work for additional information
7 * regarding copyright ownership. The ASF licenses this file
8 * to you under the Apache License, Version 2.0 (the
9 * "License"); you may not use this file except in compliance
10 * with the License. You may obtain a copy of the License at
11 *
12 * http://www.apache.org/licenses/LICENSE-2.0
13 *
14 * Unless required by applicable law or agreed to in writing,
15 * software distributed under the License is distributed on an
16 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17 * KIND, either express or implied. See the License for the
18 * specific language governing permissions and limitations
19 * under the License.
20 */
21
22 import org.apache.archiva.indexer.ArchivaIndexingContext;
23
24 import java.net.URI;
25 import java.util.Locale;
26
27 /**
28 * This is the editable part of a repository.
29 * Normally a repository should also implement this interface but it is not
30 * required.
31 *
32 * Capabilities and features are a integral part of the implementation and not
33 * provided here by the interface.
34 * Feature setting methods are provided by the features itself.
35 *
36 */
37 public interface EditableRepository extends Repository
38 {
39
40 /**
41 * Returns the primary locale used for setting the default values for
42 * name and description.
43 *
44 * @return The locale used for name and description when they are not set
45 */
46 Locale getPrimaryLocale();
47
48 /**
49 * Sets the name for the given locale
50 *
51 * @param locale the locale for which the name is set
52 * @param name The name value in the language that matches the locale
53 */
54 void setName( Locale locale, String name);
55
56 /**
57 * Sets the description for the given locale
58 *
59 * @param locale the locale for which the description is set
60 * @param description The description in the language that matches the locale.
61 */
62 void setDescription(Locale locale, String description);
63
64 /**
65 * Sets the location of the repository. May be a URI that is suitable for the
66 * repository implementation. Not all implementations will accept the same URI schemes.
67 * @param location the location URI
68 * @throws UnsupportedURIException if the URI scheme is not supported by the repository type.
69 */
70 void setLocation(URI location) throws UnsupportedURIException;
71
72 /**
73 * Sets the base uri for relative location uris.
74 *
75 * @param baseUri
76 */
77 void setBaseUri(URI baseUri);
78
79 /**
80 * Adds a failover location for the repository.
81 *
82 * @param location The location that should be used as failover.
83 * @throws UnsupportedURIException if the URI scheme is not supported by the repository type.
84 */
85 void addFailoverLocation(URI location) throws UnsupportedURIException;
86
87 /**
88 * Removes a failover location from the set.
89 *
90 * @param location the location uri to remove
91 */
92 void removeFailoverLocation(URI location);
93
94 /**
95 * Clears the failover location set.
96 */
97 void clearFailoverLocations();
98
99 /**
100 * Sets the flag for scanning the repository. If true, the repository will be scanned.
101 * You have to set the scheduling times, if you set this to true.
102 *
103 * @param scanned if true, the repository is scanned regulary.
104 */
105 void setScanned(boolean scanned);
106
107 /**
108 * Sets the scheduling definition, that defines the times, when the regular repository
109 * jobs are started. The <code>cronExpression</code> must be a valid
110 * quartz cron definition.
111 *
112 * @See http://www.quartz-scheduler.org/api/2.2.1/org/quartz/CronExpression.html
113 *
114 * @param cronExpression the cron expression.
115 * @throws IllegalArgumentException if the cron expression is not valid.
116 */
117 void setSchedulingDefinition(String cronExpression) throws IllegalArgumentException;
118
119 /**
120 * Sets the layout string.
121 * @param layout
122 */
123 void setLayout(String layout);
124
125 /**
126 * Sets the indexing context reference.
127 * @param context
128 */
129 void setIndexingContext(ArchivaIndexingContext context);
130
131
132 }