Exemple #1
0
  @Before
  public void setUp() throws IOException {
    Injector i =
        Guice.createInjector(Modules.override(new GeogitModule()).with(new JEStorageModule()));

    GeoGIT gg = new GeoGIT(i, Tests.newTmpDir("geogit", "tmp"));

    Repository repo = gg.getOrCreateRepository();
    repo.command(ConfigOp.class)
        .setAction(ConfigAction.CONFIG_SET)
        .setName("user.name")
        .setValue("Wile E Coyote")
        .call();
    repo.command(ConfigOp.class)
        .setAction(ConfigAction.CONFIG_SET)
        .setName("user.email")
        .setValue("*****@*****.**")
        .call();

    addShp(TestData.states(), repo);
    addShp(TestData.point(), repo);
    addShp(TestData.line(), repo);
    addShp(TestData.polygon(), repo);

    repo.command(BranchCreateOp.class).setName("scratch").call();
    ws = new GeoGitWorkspace(gg, null);
  }
Exemple #2
0
  void addShp(VectorDataset data, Repository repo) throws IOException {
    String name = data.getName();
    repo.getWorkingTree()
        .insert(
            name, GT.iterator(data.cursor(new Query())), new NullProgressListener(), null, null);
    data.close();

    AddOp add = repo.command(AddOp.class);
    add.call();

    CommitOp commit = repo.command(CommitOp.class);
    commit.setMessage("initial commit of " + name);
    commit.call();
  }
  /**
   * This function takes all of the changes introduced by a commit on the sparse repository and
   * creates a new commit on the full repository with those changes.
   *
   * @param commitId the commit id of commit from the sparse repository
   * @param from the sparse repository
   * @param to the full repository
   */
  protected void pushSparseCommit(ObjectId commitId) {
    Repository from = localRepository;
    Repository to = remoteGeoGit.getRepository();
    Optional<RevObject> object = from.command(RevObjectParse.class).setObjectId(commitId).call();
    if (object.isPresent() && object.get().getType().equals(TYPE.COMMIT)) {
      RevCommit commit = (RevCommit) object.get();
      ObjectId parent = ObjectId.NULL;
      List<ObjectId> newParents = new LinkedList<ObjectId>();
      for (int i = 0; i < commit.getParentIds().size(); i++) {
        ObjectId parentId = commit.getParentIds().get(i);
        if (i != 0) {
          Optional<ObjectId> commonAncestor =
              from.getGraphDatabase()
                  .findLowestCommonAncestor(commit.getParentIds().get(0), parentId);
          if (commonAncestor.isPresent()) {
            if (from.getGraphDatabase().isSparsePath(parentId, commonAncestor.get())) {
              // This should be the base commit to preserve the sparse changes that
              // were filtered
              // out.
              newParents.add(0, from.getGraphDatabase().getMapping(parentId));
              continue;
            }
          }
        }
        newParents.add(from.getGraphDatabase().getMapping(parentId));
      }
      if (newParents.size() > 0) {
        parent = from.getGraphDatabase().getMapping(newParents.get(0));
      }
      Iterator<DiffEntry> diffIter =
          from.command(DiffOp.class)
              .setNewVersion(commitId)
              .setOldVersion(parent)
              .setReportTrees(true)
              .call();

      LocalCopyingDiffIterator changes = new LocalCopyingDiffIterator(diffIter, from, to);

      RevTree rootTree = RevTree.EMPTY;

      if (newParents.size() > 0) {
        ObjectId mappedCommit = newParents.get(0);

        Optional<ObjectId> treeId =
            to.command(ResolveTreeish.class).setTreeish(mappedCommit).call();
        if (treeId.isPresent()) {
          rootTree = to.getTree(treeId.get());
        }
      }

      // Create new commit
      ObjectId newTreeId =
          to.command(WriteTree.class)
              .setOldRoot(Suppliers.ofInstance(rootTree))
              .setDiffSupplier(Suppliers.ofInstance((Iterator<DiffEntry>) changes))
              .call();

      CommitBuilder builder = new CommitBuilder(commit);
      builder.setParentIds(newParents);
      builder.setTreeId(newTreeId);

      RevCommit mapped = builder.build();
      to.getObjectDatabase().put(mapped);

      from.getGraphDatabase().map(commit.getId(), mapped.getId());
      from.getGraphDatabase().map(mapped.getId(), commit.getId());
    }
  }
Exemple #4
0
  protected final void doSetUp() throws IOException, SchemaException, ParseException, Exception {
    envHome = repositoryTempFolder.getRoot();

    injector = createInjector();

    geogit = new GeoGIT(injector, envHome);
    repo = geogit.getOrCreateRepository();
    repo.command(ConfigOp.class)
        .setAction(ConfigAction.CONFIG_SET)
        .setName("user.name")
        .setValue("Gabriel Roldan")
        .call();
    repo.command(ConfigOp.class)
        .setAction(ConfigAction.CONFIG_SET)
        .setName("user.email")
        .setValue("*****@*****.**")
        .call();

    pointsType = DataUtilities.createType(pointsNs, pointsName, pointsTypeSpec);
    modifiedPointsType = DataUtilities.createType(pointsNs, pointsName, modifiedPointsTypeSpec);

    points1 = feature(pointsType, idP1, "StringProp1_1", new Integer(1000), "POINT(1 1)");
    points1_modified = feature(pointsType, idP1, "StringProp1_1a", new Integer(1001), "POINT(1 2)");
    points1B =
        feature(
            modifiedPointsType,
            idP1,
            "StringProp1_1",
            new Integer(1000),
            "POINT(1 1)",
            "ExtraString");

    points1B_modified =
        feature(
            modifiedPointsType,
            idP1,
            "StringProp1_1a",
            new Integer(1001),
            "POINT(1 2)",
            "ExtraStringB");

    points2 = feature(pointsType, idP2, "StringProp1_2", new Integer(2000), "POINT(2 2)");
    points3 = feature(pointsType, idP3, "StringProp1_3", new Integer(3000), "POINT(3 3)");

    linesType = DataUtilities.createType(linesNs, linesName, linesTypeSpec);

    lines1 = feature(linesType, idL1, "StringProp2_1", new Integer(1000), "LINESTRING (1 1, 2 2)");
    lines2 = feature(linesType, idL2, "StringProp2_2", new Integer(2000), "LINESTRING (3 3, 4 4)");
    lines3 = feature(linesType, idL3, "StringProp2_3", new Integer(3000), "LINESTRING (5 5, 6 6)");

    polyType = DataUtilities.createType(polyNs, polyName, polyTypeSpec);

    poly1 =
        feature(
            polyType,
            idPG1,
            "StringProp3_1",
            new Integer(1000),
            "POLYGON ((1 1, 2 2, 3 3, 4 4, 1 1))");
    poly2 =
        feature(
            polyType,
            idPG2,
            "StringProp3_2",
            new Integer(2000),
            "POLYGON ((6 6, 7 7, 8 8, 9 9, 6 6))");
    poly3 =
        feature(
            polyType,
            idPG3,
            "StringProp3_3",
            new Integer(3000),
            "POLYGON ((11 11, 12 12, 13 13, 14 14, 11 11))");

    setUpInternal();
  }