blob: 42929885f364c9eef0759f748783b7f5fd7cc9d1 [file] [log] [blame]
/*
* Copyright 2000-2012 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 org.jetbrains.idea.svn.info;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.idea.svn.api.Depth;
import org.jetbrains.idea.svn.api.NodeKind;
import org.jetbrains.idea.svn.conflict.ConflictAction;
import org.jetbrains.idea.svn.conflict.ConflictOperation;
import org.jetbrains.idea.svn.conflict.ConflictReason;
import org.jetbrains.idea.svn.lock.Lock;
import org.tmatesoft.svn.core.*;
import org.xml.sax.SAXException;
import java.io.File;
import java.util.Date;
/**
* Created with IntelliJ IDEA.
* User: Irina.Chernushina
* Date: 1/27/12
* Time: 2:11 PM
*/
public class SvnInfoStructure {
@Nullable public File myFile;
public String relativeUrl;
public SVNURL myUrl;
public SVNURL myRootURL;
public long myRevision;
public NodeKind myKind;
public String myUuid;
public long myCommittedRevision;
public String myCommittedDate;
public String myAuthor;
public String mySchedule;
public SVNURL myCopyFromURL;
public long myCopyFromRevision;
public String myTextTime;
public String myPropTime;
public String myChecksum;
public String myConflictOld;
public String myConflictNew;
public String myConflictWorking;
public String myPropRejectFile;
public Lock.Builder myLockBuilder;
public Depth myDepth;
public String myChangelistName;
public long myWcSize;
public Date myCorrectCommittedDate;
public Date myCorrectTextDate;
public TreeConflictDescription myTreeConflict;
public Info convert() throws SAXException, SVNException {
return new Info(myFile, myUrl, myRootURL, myRevision, myKind, myUuid, myCommittedRevision, myCommittedDate, myAuthor, mySchedule,
myCopyFromURL, myCopyFromRevision, myConflictOld, myConflictNew, myConflictWorking,
myPropRejectFile, getLock(), myDepth, createTreeConflict());
}
@Nullable
private Lock getLock() {
return myLockBuilder != null ? myLockBuilder.build() : null;
}
private org.jetbrains.idea.svn.conflict.TreeConflictDescription createTreeConflict() throws SAXException, SVNException {
if (myTreeConflict == null) {
return null;
}
else {
assert myFile != null;
return new org.jetbrains.idea.svn.conflict.TreeConflictDescription(myFile, myKind, ConflictAction.from(myTreeConflict.myAction),
ConflictReason.from(myTreeConflict.myReason),
ConflictOperation.from(myTreeConflict.myOperation),
createVersion(myTreeConflict.mySourceLeft),
createVersion(myTreeConflict.mySourceRight));
}
}
private org.jetbrains.idea.svn.conflict.ConflictVersion createVersion(final ConflictVersion version) throws SVNException, SAXException {
return version == null
? null
: new org.jetbrains.idea.svn.conflict.ConflictVersion(SVNURL.parseURIEncoded(version.myRepoUrl), version.myPathInRepo,
parseRevision(version.myRevision), NodeKind.from(version.myKind));
}
private long parseRevision(final String revision) throws SAXException {
try {
return Long.parseLong(revision);
} catch (NumberFormatException e) {
throw new SAXException(e);
}
}
public static class TreeConflictDescription {
public String myOperation;
public String myKind;
public String myReason;
public String myVictim;
public String myAction;
public ConflictVersion mySourceLeft;
public ConflictVersion mySourceRight;
}
public static class ConflictVersion {
public String myKind;
public String myPathInRepo;
public String myRepoUrl;
public String myRevision;
}
}