-
Notifications
You must be signed in to change notification settings - Fork 80
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Change] Finished implementing methods for ChangeAtlas #280
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Just a few feedback comments.
if (this.bounds == null) | ||
{ | ||
// Stream it to make sure the "Iterable" signature is used here (vs. Located, which | ||
// would stack overflow). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Hah, good catch.
if (this.metaData == null) | ||
{ | ||
final AtlasSize size = new AtlasSize(this); | ||
this.metaData = this.source.metaData().copyWithNewSize(size).copyWithNewOriginal(false); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What happens here if the source metadata
is also null
?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
NPE!!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thinking about this some more, is it ever possible for metaData
to actually be null
in a valid Atlas
? I don't think so. It looks like PackedAtlasSerializer
will throw an exception if it cannot deserialize a field, so you'll never have a null
metadata from a PackedAtlas
, at least.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I added a check anyway.
@@ -120,61 +139,65 @@ public Node node(final long identifier) | |||
@Override | |||
public long numberOfAreas() | |||
{ | |||
throw new UnsupportedOperationException(); | |||
return Iterables.size(areas()); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It might be worth caching these values once you've computed them with Iterables.size()
? What do you think? Maybe it's just unnecessary code bloat?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
private Optional<Long> numberOfAreas = Optional.empty();
.
.
.
public long numberOfAreas()
{
if (numberOfAreas.isPresent()) {
return numberOfAreas.get();
} else {
numberOfAreas = Optional.of(Iterables.size(areas()));
return numberOfAreas.get();
}
}
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good idea.
getIdentifier())); | ||
final AtlasEntity memberChangeEntity = getChangeAtlas().entity(item.getIdentifier(), | ||
item.getType()); | ||
if (memberChangeEntity == null) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Once we update the member fetching for ChangeRelation
, seeing this exception will mean something went seriously wrong - ie. it's a good sanity check that our code is working correctly.
/** | ||
* @author matthieun | ||
*/ | ||
public class ChangeAtlasTest |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Good stuff.
* [Change] Skeleton for Atlas Change feature (#273) * test change ideas * more * better comments * test skeleton * test and more details * more testing and validation * refactoring * validation public * move around and fix test * touchup * code review comments and shallow bloated features and more testing * added bloated relation * added test * added relation testing to edge and node * fix compilation errors * finished bloated features and related tests * added missing change items * [Change] Finished implementing methods for ChangeAtlas (#280) * few changes and some tests * more tests * add synchronized * code review comments * [Change] More ChangeAtlas updates (#284) * Fixed entitiesFor if an entity was missing * Checkstyle and comment change * ChangeNodes now filter out edges which are connected but do not exist * ChangeNodes now filter out parent relations which do not exist. * Checkstyle correction in BloatedAtlas interface BloatedEntity, and FeatureChange comment update. * Added a ChangeAtlasTest and ChangeAtlasTestRule. Remove these before PR * Implemented proper bounding for all the bloated entities * Removed local ChangeAtlasTest * Fixed spotless errors. but now unit tests are failing * Fixed a bunch of issues with bounds calculation * Spotless * [Change] Fixed failing unit tests (#285) * Fixed failing unit tests * Fixed a typo * [Change] Add validation and related testing to FeatureChange and Change (#286) * with failing tests * Validation * synchronize add and get * [Change] Lots of filtering implemented (#287) * Edges now filter themselves out if one of their connected nodes is missing * Relations now filter out members which do not exist. ChangeAtlas filters empty/shallow relations * Added a test to demonstrate that shallow relation removal is robust * Spotless apply * Added some additional relation tests * Updated a comment * [Change] ChangeAtlas validation (#288) * tests shuffle * All tests * spotless * logger not used * [Change] Simple refactor and Javadoc (#289) * compilation and sonar * forgotten some methods * package simplification and Javadoc * forgot tests * [Change] More complex unit tests (#290) * add more complex unit tests * AtlasChangeGenerator * Added shortcuts for tags * [Change] Ability to merge FeatureChange objects (#291) * Added feature change mergeability * Attempt merge in change * more tests * even more tests * last one? * [Change] Fixed bug with missing parent relations (#292) * relation member feature merging broken * Merge relations in many more places * Fix tests and change osmIdentifier API in relation * Added equality tests * Some cleanup from testing * Fixed tests and added new relation based generator * [Change] Keep track of explicitly removed relation members (#295) * Keep track of explicitly removed relation members * use method overloading * Fixed issue where excluded members were wiped in RelationMemberList (#298) * [Change] Added an AtlasDiff class to produce Changes from a before and after Atlas (#293) * Started working on a diff generator * Working on basic AtlasDiff * Still trying to make valid test case * Removed relations from test atlas * Removed node from before atlas * Still working on diff * Continuing draft of the AtlasDiff * Saving temporary working changes * Lots more doc comments * Added more comments * Fixed compilation errors after rebase * Working on modified entities, more comments * Working on modify case. * Lots of new stuff. Doesnt compile lol * Trying node diffs * Trying to get parent relations test to work * Refactor name * Working on relation support. THings may need to change * More progress * getTagChangeIfNecessary now respects useBloated and saveGeo flags. Also fixed a bug in parentRelationIfNec * Finished member in relation diffing * Added edge diff * Added the rest of the changeIfNecessary method * Relation diffs and more testing * Finished implementing tests * Checkstyle and spotless * Added PackedAtlasCloning equality to tests * Updated a test * Tests still failing even after rebase :( * Isolating bug using testatlas * Trying to fix bug... * Further bugfix. Using non-bloated entities still does not work * Expose bug when using non-bloated entities * Bug fix in place. Disallowing non-Bloated entities for FeatureChanges. Need to refactor stuff. * Removed all geometry matching related code. This feature is not necessary due to improved WaySectionProcessor. * Removed TODOs in AtlasDiff * Removed useBloatedEntities option * AtlasDiff now returns an Optional<Change>, and empty Changes are disallowed by the validator * Fixed Sonar issues in AtlasDiff and AtlasDiffHelper * Refactored interface for BloatedRelation::withMembers * Rename variables for clarity * Fixed awkward copy-pasted typo * Minor method name refactor * Fixed a unit test that used a non-Bloated type to create a feature change * Refactored withMembers to be more null-safe * Added javadoc * Removed old method * Fixed some Sonar issues. Mostly just ignoring false positives (#304) * Re-arrange NOSONAR locations
Description:
Finished implementing methods for ChangeAtlas. Also added some tests.
On the side: Added a few methods to Iterables and PolyLine, for convenience in tests.
Potential Impact:
N/A
Unit Test Approach:
Test various use cases for changing features in a ChangeAtlas
Test Results:
All pass except one that is ignored, as it will succeed when relations can self remove missing members.
In doubt: Contributing Guidelines