コード例 #1
0
  /**
   * @param features
   * @param qualifiersToTransfer
   * @param key
   * @param sameKey
   * @param isDatabaseEntry
   * @param geneNames
   * @return
   */
  private static String[] transfer(
      final FeatureVector features,
      final QualifierVector qualifiersToTransfer,
      final String key,
      final boolean sameKey,
      final boolean overwrite,
      final boolean isDatabaseEntry,
      String[] geneNames,
      final StringBuffer genesUpdated) {
    final TransferFeaturePredicate predicate =
        new TransferFeaturePredicate(key, sameKey, isDatabaseEntry, geneNames);

    for (int i = 0; i < features.size(); i++) {
      Feature thisFeature = features.elementAt(i);
      if (predicate.testPredicate(thisFeature)) {
        StringBuffer qualifierBuffer = new StringBuffer();
        for (int j = 0; j < qualifiersToTransfer.size(); j++) {
          Qualifier newQualifier = qualifiersToTransfer.elementAt(j);
          String qualifierName = newQualifier.getName();
          try {
            if (overwrite) {
              thisFeature.setQualifier(newQualifier);
              qualifierBuffer.append(
                  "  "
                      + qualifierName
                      + " (overwritten)\n"
                      + parseStringVector(newQualifier.getValues()));
            } else {
              final StringVector oldValues;
              if (thisFeature.getQualifierByName(newQualifier.getName()) == null) oldValues = null;
              else oldValues = thisFeature.getQualifierByName(newQualifier.getName()).getValues();

              final Qualifier newQualifierTmp =
                  getQualifierWithoutDuplicateValues(newQualifier, oldValues);
              if (newQualifierTmp == null) continue;
              thisFeature.addQualifierValues(newQualifierTmp);
              qualifierBuffer.append(
                  "  "
                      + qualifierName
                      + " (added)\n"
                      + parseStringVector(newQualifier.getValues()));
            }
          } catch (Exception e1) {
            e1.printStackTrace();
          }
        }

        geneNames = removeArrayElement(geneNames, predicate.getGeneName());
        if (qualifierBuffer.length() > 0)
          genesUpdated.append(
              thisFeature.getSystematicName() + " (" + key + ")\n" + qualifierBuffer);
      }
    }
    return geneNames;
  }