blob: 922cc1983ba7dbaad3b0b9fa1f9cf3a68f83232f [file] [log] [blame]
/*
* Copyright 2000-2011 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.intellij.cvsSupport2.config;
import com.intellij.openapi.cvsIntegration.DateOrRevision;
import com.intellij.openapi.util.DefaultJDOMExternalizer;
import com.intellij.openapi.util.InvalidDataException;
import com.intellij.openapi.util.JDOMExternalizable;
import com.intellij.openapi.util.WriteExternalException;
import org.jdom.Element;
/**
* author: lesya
*/
public class DateOrRevisionSettings implements JDOMExternalizable, DateOrRevision, Cloneable, Comparable<DateOrRevisionSettings> {
public String BRANCH = "";
public String DATE = "";
public boolean USE_BRANCH = false;
public boolean USE_DATE = false;
@Override
public void readExternal(Element element) throws InvalidDataException {
DefaultJDOMExternalizer.readExternal(this, element);
}
@Override
public void writeExternal(Element element) throws WriteExternalException {
DefaultJDOMExternalizer.writeExternal(this, element);
}
public boolean equals(Object o) {
if (this == o) return true;
if (!(o instanceof DateOrRevisionSettings)) return false;
final DateOrRevisionSettings dateOrRevisionSettings = (DateOrRevisionSettings)o;
if (USE_BRANCH != dateOrRevisionSettings.USE_BRANCH) {
return false;
}
if (USE_BRANCH) {
if (!BRANCH.equals(dateOrRevisionSettings.BRANCH)) {
return false;
}
}
if (USE_DATE != dateOrRevisionSettings.USE_DATE) {
return false;
}
if (USE_DATE) {
if (!DATE.equals(dateOrRevisionSettings.DATE)) {
return false;
}
}
return true;
}
public int hashCode() {
int result;
result = USE_BRANCH ? 1 : 0;
if (USE_BRANCH) {
result = BRANCH.hashCode();
}
result = 29 * result + (USE_DATE ? 1 : 0);
if (USE_DATE) {
result = 29 * result + DATE.hashCode();
}
return result;
}
@Override
public boolean shouldUseDate() {
return USE_DATE;
}
@Override
public boolean shouldUseBranch() {
return USE_BRANCH;
}
@Override
public String getBranch() {
return BRANCH;
}
@Override
public String getDate() {
if (DATE == null) return "";
return DATE;
}
public void setDate(String value) {
if (value == null)
DATE = "";
else
DATE = value;
}
public boolean overridesDefault() {
return USE_BRANCH || USE_DATE;
}
public DateOrRevisionSettings updateFrom(DateOrRevision dateOrRevision) {
USE_BRANCH = dateOrRevision.shouldUseBranch();
USE_DATE = dateOrRevision.shouldUseDate();
BRANCH = dateOrRevision.getBranch();
DATE = dateOrRevision.getDate();
return this;
}
@Override
public DateOrRevisionSettings clone() throws CloneNotSupportedException {
return (DateOrRevisionSettings)super.clone();
}
@Override
public int compareTo(final DateOrRevisionSettings dateOrRevision) {
if (USE_DATE && dateOrRevision.USE_DATE && DATE != null && dateOrRevision.DATE != null) {
return DATE.compareTo(dateOrRevision.DATE);
}
return 0;
}
public String asString() {
if (USE_DATE) {
return DATE;
}
if (USE_BRANCH) {
return BRANCH;
}
return "HEAD";
}
}