Skip to content

Commit

Permalink
[FIX|REFACTO] - fixed the show=false was not supported | - Builder fo…
Browse files Browse the repository at this point in the history
…r TagItem
  • Loading branch information
Capaldijo authored and Loïc Ortola committed Jul 5, 2017
1 parent 5a67727 commit 39d1bd1
Show file tree
Hide file tree
Showing 6 changed files with 122 additions and 25 deletions.
10 changes: 0 additions & 10 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -296,13 +296,3 @@ task checkstyle(type: Checkstyle) {
}

preBuild.dependsOn('checkstyle')

/*apply plugin: 'com.github.hierynomus.license'
license {
header = file("LICENSE-HEADER")
strictCheck = true
ext.year = Calendar.getInstance().get(Calendar.YEAR)
ext.name = 'eBusiness Information'
ext.program = 'OSM Contributor'
}
preBuild.dependsOn('licenseFormat')*/
2 changes: 1 addition & 1 deletion src/main/assets/updateSql-6-7.sql
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ DROP TABLE `POI`;
DROP TABLE `POI_TYPE_TAG`;
DROP TABLE `POI_TYPE`;
CREATE TABLE `POI_TYPE` (`ID` INTEGER PRIMARY KEY AUTOINCREMENT, `ICON` VARCHAR, `BACKEND_ID` VARCHAR,`DESCRIPTION` VARCHAR,`KEYWORDS` VARCHAR, `NAME` VARCHAR NOT NULL, `USAGE_COUNT` INTEGER, `LAST_USE` BIGINT NOT NULL);
CREATE TABLE `POI_TYPE_TAG` (`ID` INTEGER PRIMARY KEY AUTOINCREMENT, `POI_TYPE_ID` BIGINT NOT NULL, `KEY` VARCHAR NOT NULL, `VALUE` VARCHAR, `ORDINAL` INTEGER NOT NULL, `MANDATORY` SMALLINT NOT NULL, `POSSIBLE_VALUES` VARCHAR);
CREATE TABLE `POI_TYPE_TAG` (`ID` INTEGER PRIMARY KEY AUTOINCREMENT, `POI_TYPE_ID` BIGINT NOT NULL, `KEY` VARCHAR NOT NULL, `VALUE` VARCHAR, `ORDINAL` INTEGER NOT NULL, `MANDATORY` SMALLINT NOT NULL, `POSSIBLE_VALUES` VARCHAR, `SHOW` SMALLINT);
CREATE TABLE `POI` (`ID` INTEGER PRIMARY KEY AUTOINCREMENT , `LONGITUDE` DOUBLE PRECISION NOT NULL , `LATITUDE` DOUBLE PRECISION NOT NULL , `NAME` VARCHAR , `BACKEND_ID` VARCHAR , `VERSION` VARCHAR , `UPDATE_DATE` BIGINT , `VISIBLE` SMALLINT , `UPDATED` SMALLINT NOT NULL , `WAY` SMALLINT NOT NULL , `TO_DELETE` SMALLINT NOT NULL , `LEVEL` VARCHAR , `POI_TYPE_ID` BIGINT );
CREATE TABLE `POI_NODE_REF` (`ID` INTEGER PRIMARY KEY AUTOINCREMENT , `LONGITUDE` DOUBLE PRECISION NOT NULL , `LATITUDE` DOUBLE PRECISION NOT NULL , `NODE_BACKEND_ID` VARCHAR NOT NULL , `ORDINAL` INTEGER NOT NULL , `POI_ID` BIGINT NOT NULL , `UPDATED` SMALLINT NOT NULL );
CREATE TABLE `NOTE` (`ID` INTEGER PRIMARY KEY AUTOINCREMENT, `BACKEND_ID` VARCHAR, `LATITUDE` DOUBLE PRECISION NOT NULL, `LONGITUDE` DOUBLE PRECISION NOT NULL, `TEXT` VARCHAR, `STATUS` VARCHAR, `CREATED_DATE` BIGINT, `UPDATED` SMALLINT NOT NULL);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@ public class PoiTypeTag implements Comparable<PoiTypeTag> {
public static final String ORDINAL = "ORDINAL";
public static final String POSSIBLE_VALUES = "POSSIBLE_VALUES";
public static final String TAG_TYPE = "TAG_TYPE";
public static final String SHOW = "SHOW";

@DatabaseField(columnName = ID, generatedId = true, canBeNull = false)
private Long id;
Expand All @@ -63,6 +64,9 @@ public class PoiTypeTag implements Comparable<PoiTypeTag> {
@DatabaseField(columnName = TAG_TYPE)
private TagItem.Type tagType;

@DatabaseField(columnName = SHOW)
private Boolean show;

public Long getId() {
return id;
}
Expand Down Expand Up @@ -127,6 +131,14 @@ public void setTagType(TagItem.Type tagType) {
this.tagType = tagType;
}

public void setShow(Boolean show) {
this.show = show;
}

public Boolean getShow() {
return show;
}

@Override
public String toString() {
return "PoiTypeTag{" +
Expand All @@ -138,6 +150,7 @@ public String toString() {
", poiType=" + (poiType == null ? null : poiType.getId()) +
", possibleValues=" + possibleValues +
", tagType=" + tagType +
", show=" + show +
'}';
}

Expand Down Expand Up @@ -213,6 +226,11 @@ public Builder poiTypeTag(TagItem.Type poiTagType) {
return this;
}

public Builder show(Boolean show) {
this.poiTypeTag.show = show;
return this;
}

public PoiTypeTag build() {
return this.poiTypeTag;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,6 +76,7 @@ private PoiType convert(PoiTypeDto dto) {
poiTypeTag.setValue(tagDto.getValue());
poiTypeTag.setMandatory(tagDto.getRequired());
poiTypeTag.setOrdinal(ordinal++);
poiTypeTag.setShow(tagDto.getShow());
if (tagDto.getValues() != null && !tagDto.getValues().isEmpty()) {
List<String> possibleValues = new ArrayList<>();
for (Map<String, Map<String, String>> valuesMap : tagDto.getValues()) {
Expand Down
47 changes: 40 additions & 7 deletions src/main/java/io/jawg/osmcontributor/ui/adapters/TagsAdapter.java
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@
import io.jawg.osmcontributor.model.utils.OpeningTime;
import io.jawg.osmcontributor.rest.mappers.PoiTypeMapper;
import io.jawg.osmcontributor.ui.adapters.item.TagItem;
import io.jawg.osmcontributor.ui.adapters.item.TagItem.TagItemBuilder;
import io.jawg.osmcontributor.ui.adapters.parser.OpeningTimeValueParser;
import io.jawg.osmcontributor.ui.adapters.parser.ParserManager;
import io.jawg.osmcontributor.ui.events.edition.PleaseApplyOpeningTimeChange;
Expand Down Expand Up @@ -145,7 +146,11 @@ public int getItemCount() {
* @return the position of the inserted element
*/
public int addLast(String key, String value, List<String> possibleValues) {
TagItem tagItem = new TagItem(key, value, false, possibleValues, key.contains("hours") ? TagItem.Type.OPENING_HOURS : TagItem.Type.TEXT, true);
TagItem tagItem = new TagItemBuilder(key, value).mandatory(false)
.values(possibleValues)
.type(key.contains("hours") ? TagItem.Type.OPENING_HOURS : TagItem.Type.TEXT)
.isConform(true)
.show(true).build();
// Add into the list
tagItemList.add(tagItem);
keyTagItem.put(key, tagItem);
Expand Down Expand Up @@ -221,14 +226,19 @@ private void editTag(TagItem tagItem, String newValue) {
* @param position position inside the list
* @param updatable is updatable
*/
private void addTag(String key, String value, boolean mandatory, List<String> values, int position, boolean updatable, TagItem.Type type) {
private void addTag(String key, String value, boolean mandatory, List<String> values, int position, boolean updatable, TagItem.Type type, boolean show) {
// Parse value if needed
String valueFormatted = ParserManager.getValue(value, type);
type = type == null ? TagItem.Type.TEXT : type;
type = key.equals("collection_times") ? TagItem.Type.TIME : type;
type = key.equals("opening_hours") ? TagItem.Type.OPENING_HOURS : type;

TagItem tagItem = new TagItem(key, value, mandatory, values, updatable ? type : TagItem.Type.CONSTANT, valueFormatted != null || type == TagItem.Type.NUMBER);
TagItem tagItem = new TagItemBuilder(key, value).mandatory(mandatory)
.values(values)
.type(updatable ? type : TagItem.Type.CONSTANT)
.isConform(valueFormatted != null || type == TagItem.Type.NUMBER)
.show(show).build();

// Add into the list
if (!tagItemList.contains(tagItem)) {
tagItemList.add(position, tagItem);
Expand Down Expand Up @@ -304,29 +314,34 @@ private void loadTags(Map<String, String> poiTags, Map<String, List<String>> tag
for (PoiTypeTag poiTypeTag : poi.getType().getTags()) {
List<String> values = removeDuplicate(getPossibleValuesAsList(poiTypeTag.getPossibleValues()),
tagValueSuggestionsMap.get(poiTypeTag.getKey()));

boolean show = true;
if (poiTypeTag.getShow() != null) {
show = poiTypeTag.getShow().booleanValue();
}
// Tags not in the PoiType should not be displayed if we are not in expert mode
if (poiTypeTag.getValue() == null) {
String key = poiTypeTag.getKey();

// Display tags as mandatory if they are mandatory and we are not in expert mode
if (poiTypeTag.getMandatory() && !expertMode) {
addTag(key, poiTags.get(key), true, values, nbMandatory + nbImposed, true, poiTypeTag.getTagType());
addTag(key, poiTags.get(key), true, values, nbMandatory + nbImposed, true, poiTypeTag.getTagType(), show);
nbMandatory++;
} else {
addTag(key, poiTags.get(key), false, values, this.getItemCount(), true, poiTypeTag.getTagType());
addTag(key, poiTags.get(key), false, values, this.getItemCount(), true, poiTypeTag.getTagType(), show);
}
} else if (expertMode) {
// Display the tags of the poi that are not in the PoiType
String key = poiTypeTag.getKey();
addTag(key, poiTags.get(key), true, values, nbImposed, false, poiTypeTag.getTagType());
addTag(key, poiTags.get(key), true, values, nbImposed, false, poiTypeTag.getTagType(), show);
nbImposed++;
}
}

if (expertMode) {
for (String key : poiTags.keySet()) {
addTag(key, poiTags.get(key), false, removeDuplicate(tagValueSuggestionsMap.get(key),
Collections.singletonList(poiTags.get(key))), this.getItemCount(), true, TagItem.Type.TEXT);
Collections.singletonList(poiTags.get(key))), this.getItemCount(), true, TagItem.Type.TEXT, true);
}
}
}
Expand All @@ -337,6 +352,7 @@ private void loadTags(Map<String, String> poiTags, Map<String, List<String>> tag
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder,
int position) {

switch (tagItemList.get(position).getTagType()) {
case CONSTANT:
onBindViewHolder((TagItemConstantViewHolder) holder, position);
Expand Down Expand Up @@ -367,6 +383,11 @@ public void onBindViewHolder(RecyclerView.ViewHolder holder,
*/
private void onBindViewHolder(final TagItemAutoCompleteViewHolder holder, int position) {
final TagItem tagItem = tagItemList.get(holder.getAdapterPosition());
boolean isVisible = tagItem.isShow();

if (!isVisible) {
holder.getContent().setVisibility(View.GONE);
}

// Set values input
holder.getTextViewKey().setText(ParserManager.parseTagName(tagItem.getKey()));
Expand Down Expand Up @@ -413,6 +434,7 @@ public void afterTextChanged(Editable s) {
*/
private void onBindViewHolder(TagItemConstantViewHolder holder, int position) {
final TagItem tagItem = tagItemList.get(position);

holder.getTextViewKey().setText(ParserManager.parseTagName(tagItem.getKey()));
holder.getTextViewValue().setText(tagItem.getValue());
}
Expand All @@ -424,6 +446,12 @@ private void onBindViewHolder(TagItemConstantViewHolder holder, int position) {
*/
public void onBindViewHolder(final TagItemOpeningTimeViewHolder holder, int position) {
final TagItem tagItem = tagItemList.get(position);
boolean isVisible = tagItem.isShow();

if (!isVisible) {
holder.getContent().setVisibility(View.GONE);
}

holder.getTextViewKey().setText(ParserManager.parseTagName(tagItem.getKey()));

OpeningTime openingTime = null;
Expand Down Expand Up @@ -477,6 +505,11 @@ public void onClick(View view) {
private void onBindViewHolder(TagRadioChoiceHolder holder, int position) {
// Get tag item from list
final TagItem tagItem = tagItemList.get(position);
boolean isVisible = tagItem.isShow();

if (!isVisible) {
((View) holder.getContent().getParent()).setVisibility(View.GONE);
}

// Set key text view
holder.getTextViewKey().setText(ParserManager.parseTagName(tagItem.getKey()));
Expand Down
69 changes: 62 additions & 7 deletions src/main/java/io/jawg/osmcontributor/ui/adapters/item/TagItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@ public class TagItem implements Parcelable {
private List<String> values = new ArrayList<>();
private Type type;
private boolean isConform;
private boolean show;

/**
* Use the best UI widget based on the tag name and possible values.
Expand All @@ -44,13 +45,14 @@ public enum Type {
TIME
}

public TagItem(String key, String value, boolean mandatory, List<String> values, Type separator, boolean isConform) {
this.key = key;
this.value = value;
this.values = values;
this.mandatory = mandatory;
this.type = separator;
this.isConform = isConform;
private TagItem(TagItemBuilder builder) {
this.key = builder.key;
this.value = builder.value;
this.values = builder.values;
this.mandatory = builder.mandatory;
this.type = builder.type;
this.isConform = builder.isConform;
this.show = builder.show;
}

public TagItem(Parcel in) {
Expand Down Expand Up @@ -115,6 +117,14 @@ public void setConform(boolean conform) {
isConform = conform;
}

public boolean isShow() {
return show;
}

public void setShow(boolean show) {
this.show = show;
}

@Override
public int describeContents() {
return 0;
Expand Down Expand Up @@ -169,4 +179,49 @@ public boolean equals(Object o) {
public int hashCode() {
return key != null ? key.hashCode() : 0;
}


public static class TagItemBuilder {
private String key;
private String value;
private boolean mandatory;
private List<String> values = new ArrayList<>();
private Type type;
private boolean isConform;
private boolean show;

public TagItemBuilder(String key, String value) {
this.key = key;
this.value = value;
}

public TagItemBuilder mandatory(boolean mandatory) {
this.mandatory = mandatory;
return this;
}

public TagItemBuilder values(List<String> values) {
this.values = values;
return this;
}

public TagItemBuilder type(Type type) {
this.type = type;
return this;
}

public TagItemBuilder isConform(boolean isConform) {
this.isConform = isConform;
return this;
}

public TagItemBuilder show(boolean show) {
this.show = show;
return this;
}

public TagItem build() {
return new TagItem(this);
}
}
}

0 comments on commit 39d1bd1

Please sign in to comment.