/*******************************************************************************
* Copyright (c) 2012-2017 Codenvy, S.A.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Codenvy, S.A. - initial API and implementation
*******************************************************************************/
package org.eclipse.che.plugin.svn.server.utils;
import java.text.MessageFormat;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public final class InfoUtils {
public static final String KEY_PATH = "Path";
public static final String KEY_NAME = "Name";
public static final String KEY_URL = "URL";
public static final String KEY_RELATIVE_URL = "Relative URL";
public static final String KEY_REPOSITORY_ROOT = "Repository Root";
public static final String KEY_REPOSITORY_UUID = "Repository UUID";
public static final String KEY_REVISION = "Revision";
public static final String KEY_NODE_KIND = "Node Kind";
public static final String KEY_SCHEDULE = "Schedule";
public static final String KEY_LAST_CHANGE_AUTHOR = "Last Changed Author";
public static final String KEY_LAST_CHANGED_REV = "Last Changed Rev";
public static final String KEY_LAST_CHANGED_DATE = "Last Changed Date";
/** The absolute path to the project on the server and must be hidden for the user. */
public static final String KEY_WORKING_COPY_ROOT_PATH = "Working Copy Root Path";
private static final String STARTSWITH_PATTERN = "^{0}: (.*)$";
private InfoUtils() {
}
public static String getPath(final List<String> infoOutput) {
final Pattern pattern = Pattern.compile(MessageFormat.format(STARTSWITH_PATTERN, KEY_PATH));
return searchPattern(infoOutput, pattern);
}
private static String searchPattern(final List<String> infoOutput, final Pattern pattern) {
for (String line: infoOutput) {
final Matcher matcher = pattern.matcher(line);
if (matcher.matches()) {
final String value = matcher.group(1);
return value;
} else {
continue;
}
}
return null;
}
public static String getName(final List<String> infoOutput) {
final Pattern pattern = Pattern.compile(MessageFormat.format(STARTSWITH_PATTERN, KEY_NAME));
return searchPattern(infoOutput, pattern);
}
public static String getUrl(final List<String> infoOutput) {
final Pattern pattern = Pattern.compile(MessageFormat.format(STARTSWITH_PATTERN, KEY_URL));
return searchPattern(infoOutput, pattern);
}
public static String getRelativeUrl(final List<String> infoOutput) {
final Pattern pattern = Pattern.compile(MessageFormat.format(STARTSWITH_PATTERN, KEY_RELATIVE_URL));
return searchPattern(infoOutput, pattern);
}
public static String getRepositoryRoot(final List<String> infoOutput) {
final Pattern pattern = Pattern.compile(MessageFormat.format(STARTSWITH_PATTERN, KEY_REPOSITORY_ROOT));
return searchPattern(infoOutput, pattern);
}
public static String getRepositoryUUID(final List<String> infoOutput) {
final Pattern pattern = Pattern.compile(MessageFormat.format(STARTSWITH_PATTERN, KEY_REPOSITORY_UUID));
return searchPattern(infoOutput, pattern);
}
public static String getRevision(final List<String> infoOutput) {
final Pattern pattern = Pattern.compile(MessageFormat.format(STARTSWITH_PATTERN, KEY_REVISION));
return searchPattern(infoOutput, pattern);
}
public static String getNodeKind(final List<String> infoOutput) {
final Pattern pattern = Pattern.compile(MessageFormat.format(STARTSWITH_PATTERN, KEY_NODE_KIND));
return searchPattern(infoOutput, pattern);
}
public static String getSchedule(final List<String> infoOutput) {
final Pattern pattern = Pattern.compile(MessageFormat.format(STARTSWITH_PATTERN, KEY_SCHEDULE));
return searchPattern(infoOutput, pattern);
}
public static String getLastChangeAuthor(final List<String> infoOutput) {
final Pattern pattern = Pattern.compile(MessageFormat.format(STARTSWITH_PATTERN, KEY_LAST_CHANGE_AUTHOR));
return searchPattern(infoOutput, pattern);
}
public static String getLastChangedRev(final List<String> infoOutput) {
final Pattern pattern = Pattern.compile(MessageFormat.format(STARTSWITH_PATTERN, KEY_LAST_CHANGED_REV));
return searchPattern(infoOutput, pattern);
}
public static String getLastChangedDate(final List<String> infoOutput) {
final Pattern pattern = Pattern.compile(MessageFormat.format(STARTSWITH_PATTERN, KEY_LAST_CHANGED_DATE));
return searchPattern(infoOutput, pattern);
}
}