private CCSnapshotView create()

in clearcase-agent/src/jetbrains/buildServer/vcs/clearcase/agent/AbstractSourceProvider.java [195:242]


  private CCSnapshotView create(AgentRunningBuild build, final VcsRoot root, final String buildViewTag, final File viewRoot) throws CCException {
    final CCRegion ccRegion = new CCRegion();

    //check there id already is any Server Storage Location for a view
    boolean hasViewsStorageLocation = false;

    for (CCStorage storage : ccRegion.getStorages()) {
      if (CCStorage.View.equals(storage.getType())) {
        hasViewsStorageLocation = true;
        LOG.debug(String.format("create:: a \"Server Storage Location\" exists for a view")); //$NON-NLS-1$
        break;
      }
    }

    //try to find and use original view location as base 
    LOG.debug(String.format("create:: preparing target location for the snapshot view storage directory")); //$NON-NLS-1$
    final String ccOriginalViewTag = getSourceViewTag(build, root);
    LOG.debug(String.format("create:: found source view tag: \"%s\"", ccOriginalViewTag)); //$NON-NLS-1$
    final CCSnapshotView ccOriginalView = Util.Finder.findView(ccRegion, ccOriginalViewTag);
    if (ccOriginalView == null) {
      throw new CCException(String.format(Messages.getString("AbstractSourceProvider.could_not_find_view_by_tag_error_message"), ccOriginalViewTag)); //$NON-NLS-1$
    }
    //obtain stream if required
    final String ccOriginalStream = ccOriginalView.isUcm() ? ccOriginalView.getStream() : null;

    //check there is any View's location and hope mkview -stgloc -auto will work properly
    final CCSnapshotView clone;
    if (hasViewsStorageLocation) {

      clone = new CCSnapshotView(buildViewTag, ccOriginalStream, null, viewRoot);
    } else {

      //...construct
      final String originalViewGlobalPath = ccOriginalView.getGlobalPath();
      if(originalViewGlobalPath == null){
        throw new CCException(String.format("Cannot create view: Global Path lost '%s'", ccOriginalView));
      }
      final File originalViewGlobalFolderLocation = new File(originalViewGlobalPath).getParentFile();
      LOG.debug(String.format("create:: found Global Location of original view folder: \"%s\"", originalViewGlobalFolderLocation)); //$NON-NLS-1$
      final File buildViewGlobalFolder = new File(originalViewGlobalFolderLocation, String.format("%s.vws", buildViewTag)); //$NON-NLS-1$
      LOG.debug(String.format("create:: use \"%s\" Global Location folder for build view", buildViewGlobalFolder)); //$NON-NLS-1$

      //let's go...
      clone = new CCSnapshotView(buildViewTag, ccOriginalStream, buildViewGlobalFolder.getAbsolutePath(), viewRoot);
    }
    clone.create(String.format("Clone view \'%s\' created", buildViewTag)); //$NON-NLS-1$
    return clone;
  }