Integration Toolbox
for IBM® TIVOLI® Storage Manager

package archive_retrieve; import hu.user.toolbox.tsm.IArchiveObject; import hu.user.toolbox.tsm.IFilespace; import hu.user.toolbox.tsm.IResultSet; import hu.user.toolbox.tsm.ITSMSession; import hu.user.toolbox.tsm.Toolbox; import hu.user.toolbox.tsm.exception.ToolboxException; import hu.user.toolbox.tsm.internal.structures.DsUint160_t; import hu.user.toolbox.tsm.query.IArchiveQuery; /** * <b>Function:</b><br> * Updating an existing archive object sent using the ArchiveSingleObject.java example. * <p> * Before executing this program send an object to the server using * the ArchiveSingleObject sample. * <p> * The following operations are performed: * <ol> * <li>Initializing a single-threaded TSM API environment.</li> * <li>Creating a new TSMSession instance. * Setting default connection options. Connecting to the server using * the node name "TOOLBOX" and password "PASSWORD".</li> * <li>Retrieving the filespace named "/BACKUPFS".</li> * <li>Querying archive objects with the following parameters: * high-level name "/ARCHIVE", low-level name "/OBJECT1" and object type "FILE".</li> * <li>Updating all fields.</li> * <li>Disconnecting from the server and cleaning up the resources.</li> * </ol> * <p> * <b>Compile:</b> * <pre> * javac -d bin -cp ../lib/toolboxfortsm.jar archive_retrieve/UpdateArchiveObject.java * </pre> * <p> * <b>Execute:</b><br> * You should first set the environment variables to point to the correct * files/directories. * <pre> * set DSMI_CONFIG={Full path of your dsm.opt} * set DSMI_DIR={Tivoli Storage Manager API installation directory} * set DSMI_LOG={Any arbitrary directory} * </pre> * Then use the java command to execute the program: * <p> * <pre> * java -cp bin:../lib/toolboxfortsm.jar:../lib/ext/log4j-1.2.17.jar:../config * -Djava.library.path=../lib archive_retrieve.UpdateArchiveObject * </pre> */ public class UpdateArchiveObject { private static final String NODE_NAME = "TOOLBOX"; private static final String PASSWORD = "PASSWORD"; private static final String FILESPACE_NAME = "/ARCHIVEFS"; private static final String HIGH_LEVEL_NAME = "/ARCHIVE"; private static final String LOW_LEVEL_NAME = "/OBJECT1"; private static final String DESCRIPTION_UPDATED = "description_updated"; private static final String INFORMATION_UPDATED = "information_updated"; private static final String OWNER_UPDATED = "Owner_updated"; public static void main(String args[]) throws ToolboxException{ ITSMSession session = null; try { // Initializing a single-threaded environment Toolbox.initSingleThreading(); // Connecting to the server with the default connection options session =Toolbox.createSession(NODE_NAME, PASSWORD); // Retrieving a existing filespace IFilespace filespace = session.retrieveFilespace(FILESPACE_NAME); // Checking if filespace exists if (filespace == null) { System.out.printf("Warning: '%s' does not exists.\n", FILESPACE_NAME); return; } IArchiveObject archiveObject = null; IArchiveQuery query = filespace.createArchiveQuery(); IResultSet archives = null; try{ // Querying the object archives = query.highLevelNameMatches(HIGH_LEVEL_NAME) .lowLevelNameMatches(LOW_LEVEL_NAME) .ownerMatchesAny() // Matches any owner name .descriptionMatchesAny() // Matches any description .execute(); // Execute the query // Getting the archive object while(archives.next()){ archiveObject = (IArchiveObject) archives.get(); break; } } catch (Exception e) { e.printStackTrace(); } finally{ // The result set must be closed. archives.close(); } // Check if object has been archived. if (archiveObject == null) { System.out.printf("The object '%s%s%s' doesn't exist on the server.\n", FILESPACE_NAME, HIGH_LEVEL_NAME, LOW_LEVEL_NAME); return; } System.out.println("The original fields of the archive object:\n"); printDetails(archiveObject); // Setting the fields archiveObject.setDescription(DESCRIPTION_UPDATED); archiveObject.setOwner(OWNER_UPDATED); archiveObject.setInformation(INFORMATION_UPDATED); archiveObject.setEstimatedSize(archiveObject.getEstimatedSize() + 1); // Updating the fields archiveObject.update(); try{ // Querying the same object archives = query.highLevelNameMatches(HIGH_LEVEL_NAME) .lowLevelNameMatches(LOW_LEVEL_NAME) .ownerMatchesAny() // Matches any owner name .descriptionMatchesAny() // Matches any description .execute(); // Execute the query // Iterates over the result set while(archives.next()){ archiveObject = (IArchiveObject) archives.get(); break; } }catch (Exception e) { e.printStackTrace(); }finally{ // The result set must be closed. archives.close(); } System.out.println("The updated fields of the archive object:\n"); printDetails(archiveObject); } catch (Exception e) { e.printStackTrace(); }finally{ // Disconnecting session.disconnect(); // Cleaning up the environment Toolbox.cleanUp(); } } /** * Prints the details of an archive object. * * @param o the {@code IArchiveObject} object */ private static void printDetails(IArchiveObject o){ DsUint160_t restOrder = o.getRestoreOrderExt(); System.out.printf(" Name: %s%s%s\n", o.getFilespaceName(), o.getHighLevelName(), o.getLowLevelName()); System.out.printf(" Object type: %s\n", o.getType()); System.out.printf(" Description: %s\n", o.getDescription()); System.out.printf(" Insert date: %s\n", o.getInsertionDate()); System.out.printf(" Expiration date: %s\n", o.getExpirationDate()); System.out.printf(" Owner: %s\n", o.getOwner()); System.out.printf(" Restore order: %d-%d-%d-%d-%d\n", restOrder.getTop(), restOrder.getHi_hi(), restOrder.getHi_lo(), restOrder.getLo_hi(), restOrder.getLo_lo()); System.out.printf(" Object ID: %d\n", o.getId()); System.out.printf(" Copy group: %d\n", o.getCopyGroup()); System.out.printf(" Media class: %s\n", o.getMediaClass()); System.out.printf(" Management class: %s\n", o.getManagementClass().getName()); System.out.printf(" Object information: %s\n", o.getInformation()); System.out.printf("Estimated size (byte): %d\n", o.getEstimatedSize()); System.out.printf(" Retention initated: %s\n", o.getRetentionInitiated()); System.out.printf(" Object held?: %s\n", o.getHeld()); System.out.printf(" Compression: %s\n", o.getCompressionType()); System.out.printf(" Encryption: %s\n", o.getEncryptionType()); System.out.printf(" Client deduplicated: %s\n", o.isClientDeduplicated() ? "YES" : "NO"); System.out.println(); } }