/* * Copyright (c) 2012-2015 iWave Software LLC * All Rights Reserved */ package com.emc.sa.service.windows.tasks; import org.apache.commons.lang.StringUtils; import java.util.Set; public class VerifyDriveLetterIsAvailable extends WindowsExecutionTask<Void> { private static final int MAX_DRIVE_LETTERS = 24; // A & B are floppy disks private final String driveLetter; private final Set<String> usedDriveLetters; public VerifyDriveLetterIsAvailable(String driveLetter, Set<String> usedDriveLetters) { this.driveLetter = driveLetter; this.usedDriveLetters = usedDriveLetters; provideDetailArgs(driveLetter); } @Override public void execute() throws Exception { if (StringUtils.isBlank(driveLetter)) { if (usedDriveLetters.size() == MAX_DRIVE_LETTERS) { String hostname = getTargetSystem().getTarget().getHost(); throw stateException("illegalState.VerifyDriveLetterIsAvailable.noSpareDriveLetters", hostname); } } else { if (usedDriveLetters.contains(driveLetter + ":")) { String hostname = getTargetSystem().getTarget().getHost(); throw stateException("illegalState.VerifyDriveLetterIsAvailable.driveLetterUnavailable", driveLetter, hostname); } } } }