001: /*
002: * Copyright 2007 Hippo.
003: *
004: * Licensed under the Apache License, Version 2.0 (the "License");
005: * you may not use this file except in compliance with the License.
006: * You may obtain a copy of the License at
007: *
008: * http://www.apache.org/licenses/LICENSE-2.0
009: *
010: * Unless required by applicable law or agreed to in writing, software
011: * distributed under the License is distributed on an "AS IS" BASIS,
012: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013: * See the License for the specific language governing permissions and
014: * limitations under the License.
015: */
016: package nl.hippo.cms.searchandreplace;
017:
018: import java.util.Iterator;
019: import java.util.Locale;
020: import nl.hippo.cms.searchandreplace.log.SearchAndReplaceLog;
021: import org.apache.commons.httpclient.HttpState;
022:
023: /**
024: * <p>
025: * The information and services needed by {@link SearchAndReplace} to be able to
026: * perform its job.
027: * </p>
028: */
029: public interface SearchAndReplaceConfiguration {
030: /**
031: * <p>
032: * Get the base URL of the documents returned by
033: * {@link #documentUrlsIterator()}.
034: * </p>
035: *
036: * @return the documents base URL.
037: */
038: String getDocumentsBaseUrl();
039:
040: /**
041: * <p>
042: * Get an iterator over the relative URLs of the documents to replace
043: * in.
044: * </p>
045: *
046: * @return an iterator over document URLs.
047: */
048: Iterator documentUrlsIterator();
049:
050: /**
051: * <p>
052: * Get the XPath expression specifying the scope in which to perform
053: * replacement.
054: * </p>
055: *
056: * @return an XPath expression.
057: */
058: String getScopeXpath();
059:
060: /**
061: * <p>
062: * Get the text to replace in the documents.
063: * </p>
064: *
065: * @return the text to replace.
066: */
067: String getTextToReplace();
068:
069: /**
070: * <p>
071: * Get if the search is case-sensitive or not.
072: * </p>
073: *
074: * @return <code>true</code> if the search should be performed
075: * case-sensitively, <code>false</code> otherwise.
076: */
077: boolean isSearchCaseSensitive();
078:
079: /**
080: * <p>
081: * To enable case-insensitive searches the texts have to be converted to
082: * lower case. This method returns the locale that must be used to do
083: * the conversion.
084: * </p>
085: *
086: * @return the locale to use to convert to lower case.
087: */
088: Locale getLocale();
089:
090: /**
091: * <p>
092: * The text that should replace the text to replace.
093: * </p>
094: *
095: * @return the replacement text.
096: */
097: String getReplacementText();
098:
099: /**
100: * <p>
101: * Get the HTTP state containing cookies and authentication information
102: * that must be used by the HTTP client used to communicate with the
103: * repository.
104: * </p>
105: *
106: * @return the HTTP state.
107: */
108: HttpState getHttpState();
109:
110: /**
111: * <p>
112: * Get the listener that will be notified of the progress of the
113: * replacement process.
114: * </p>
115: *
116: * @return the listener.
117: */
118: SearchAndReplaceListener getListener();
119:
120: /**
121: * <p>
122: * Get the log.
123: * </p>
124: *
125: * @return the log.
126: */
127: SearchAndReplaceLog getLog();
128: }
|