/* * RHQ Management Platform * Copyright (C) 2005-2011 Red Hat, Inc. * All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation version 2 of the License. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ package org.rhq.core.domain.drift; import java.io.Serializable; /** * An immutable class used to specify the characteristics of a requested DriftSnapshot. See * {@link org.rhq.enterprise.server.drift.DriftManagerLocal#getSnapshot(org.rhq.core.domain.auth.Subject, DriftSnapshotRequest)}. * <pre> * Defaults: * startVersion = 0 (initial snapshot) * includeDriftDirectories = false * includeDriftInstances = true; * </pre> * @author Jay Shaughnessy */ public class DriftSnapshotRequest implements Serializable { private static final long serialVersionUID = 1L; // If templateChangeSetId is set then the request is for a template's pinned snapshot private String templateChangeSetId; // If driftDefinitionId is set then the request is for a drift def's snapshot. The version info defines // which snapshot. private Integer driftDefinitionId; private Integer version; private Integer startVersion; // Applicable to any snapshot request private String directory; private boolean includeDriftDirectories; private boolean includeDriftInstances; /** * This should not be used. It's to satisfy smartgwt. */ public DriftSnapshotRequest() { } /** * Get the current (most recent) snapshot for the specified drift definition. * </br> * </br> * * @param driftDefinitionId */ public DriftSnapshotRequest(int driftDefinitionId) { this(driftDefinitionId, null, null, null, false, true); } /** * Get the requested snapshot version for the specified drift definition. * </br> * </br> * * @param driftDefinitionId * @param version not null */ public DriftSnapshotRequest(int driftDefinitionId, Integer version) { this(driftDefinitionId, version, null, null, false, true); } /** * Creates a snapshot request with the specified version range * * @param driftDefinitionId The id of the drift definition * @param startVersion The snapshot start version inclusive * @param endVersion The snapshot end version inclusive */ public DriftSnapshotRequest(int driftDefinitionId, Integer startVersion, Integer endVersion) { this.driftDefinitionId = driftDefinitionId; this.startVersion = startVersion; version = endVersion; includeDriftInstances = true; } /** * Get the requested snapshot version for the specified drift definition, narrowed to * files in the specified directory. * </br> * </br> * * @param driftDefinitionId * @param version null or < 0 or > most recent will default to most recent * @param directory if specified, limit the snapshot to the specified directory */ public DriftSnapshotRequest(int driftDefinitionId, Integer version, String directory) { this(driftDefinitionId, version, null, directory, false, true); } /** * @param driftDefinitionId * @param version null or < 0 or > most recent will default to most recent * @param startVersion null or < 0 or > version will default to 0 * @param directory if specified, limit the snapshot to the specified directory * @param includeDriftDirectories * @param includeDriftInstances */ public DriftSnapshotRequest(int driftDefinitionId, Integer version, Integer startVersion, String directory, boolean includeDriftDirectories, boolean includeDriftInstances) { super(); this.driftDefinitionId = driftDefinitionId; this.version = (null != version && version >= 0) ? version : null; this.startVersion = (null != startVersion && startVersion >= 0 && (null == this.version || startVersion > this.version)) ? startVersion : 0; if (null != directory) { directory = directory.trim(); this.directory = "".equals(directory) ? "./" : directory; } this.includeDriftDirectories = includeDriftDirectories; this.includeDriftInstances = includeDriftInstances; } public DriftSnapshotRequest(String templateChangesetIdString, String directory, boolean includeDriftDirectories, boolean includeDriftInstances) { this.templateChangeSetId = templateChangesetIdString; if (null != directory) { directory = directory.trim(); this.directory = "".equals(directory) ? "./" : directory; } this.includeDriftDirectories = includeDriftDirectories; this.includeDriftInstances = includeDriftInstances; // just init these, they should get ignored anyway this.driftDefinitionId = null; this.version = 0; this.startVersion = 0; } public String getTemplateChangeSetId() { return templateChangeSetId; } public Integer getDriftDefinitionId() { return driftDefinitionId; } public Integer getVersion() { return version; } public Integer getStartVersion() { return startVersion; } public String getDirectory() { return directory; } public boolean isIncludeDriftDirectories() { return includeDriftDirectories; } public boolean isIncludeDriftInstances() { return includeDriftInstances; } @Override public String toString() { return "DriftSnapshotRequest [directory=" + directory + ", driftDefinitionId=" + driftDefinitionId + ", includeDriftDirectories=" + includeDriftDirectories + ", includeDriftInstances=" + includeDriftInstances + ", startVersion=" + startVersion + ", templateChangeSetId=" + templateChangeSetId + ", version=" + version + "]"; } }