/*!
* Copyright 2010 - 2015 Pentaho Corporation. All rights reserved.
*
* 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.pentaho.di.repository.pur;
import java.util.ArrayList;
import java.util.List;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.repository.ObjectId;
import org.pentaho.di.repository.ObjectRevision;
import org.pentaho.di.repository.RepositoryElementInterface;
import org.pentaho.di.ui.repository.pur.services.IRevisionService;
import org.pentaho.platform.api.repository2.unified.IUnifiedRepository;
import org.pentaho.platform.api.repository2.unified.VersionSummary;
public class UnifiedRepositoryRevisionService implements IRevisionService {
private final IUnifiedRepository unifiedRepository;
private final RootRef rootRef;
public UnifiedRepositoryRevisionService( IUnifiedRepository unifiedRepository, RootRef rootRef ) {
this.unifiedRepository = unifiedRepository;
this.rootRef = rootRef;
}
@Override
public List<ObjectRevision> getRevisions( final RepositoryElementInterface element ) throws KettleException {
return getRevisions( element.getObjectId() );
}
@Override
public List<ObjectRevision> getRevisions( ObjectId fileId ) throws KettleException {
String absPath = null;
try {
List<ObjectRevision> versions = new ArrayList<ObjectRevision>();
List<VersionSummary> versionSummaries = unifiedRepository.getVersionSummaries( fileId.getId() );
for ( VersionSummary versionSummary : versionSummaries ) {
versions.add( new PurObjectRevision( versionSummary.getId(), versionSummary.getAuthor(), versionSummary
.getDate(), versionSummary.getMessage() ) );
}
return versions;
} catch ( Exception e ) {
throw new KettleException( "Could not retrieve version history of object with path [" + absPath + "]", e );
}
}
@Override
public void restoreJob( ObjectId id_job, String revision, String versionComment ) throws KettleException {
unifiedRepository.restoreFileAtVersion( id_job.getId(), revision, versionComment );
rootRef.clearRef();
}
@Override
public void restoreTransformation( ObjectId id_transformation, String revision, String versionComment )
throws KettleException {
unifiedRepository.restoreFileAtVersion( id_transformation.getId(), revision, versionComment );
rootRef.clearRef();
}
}