import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Objects;
import java.util.UUID;
import org.apache.log4j.Logger;
@Override
public UUID idFor(String stringRepresentation) {
if(lastPagedEntityUUIDs == null){
- findEntities(0, stringRepresentation);
+ int pages = Math.max(1, size(stringRepresentation));
+ for(int i = 0; i < pages; i++){
+ findEntities(i, stringRepresentation);
+ }
}
return lastPagedEntityUUIDs.get(stringRepresentation);
}
*/
package eu.etaxonomy.vaadin.component;
+import java.util.Objects;
import java.util.Optional;
import java.util.UUID;
*/
@Override
public void setValue(String newFieldValue) throws com.vaadin.data.Property.ReadOnlyException, ConversionException {
- lazySelect.refresh();
- if(lazySelect.getOptions().contains(newFieldValue)){
- lazySelect.setValue(newFieldValue);
+ if(!Objects.equals(newFieldValue, lazySelect.getValue())){
+ lazySelect.refresh();
+ if(contains(newFieldValue)){
+ lazySelect.setValue(newFieldValue);
+ }
+ lazySelect.markAsDirty();
}
- lazySelect.markAsDirty();
}
+ /**
+ * @param newFieldValue
+ * @return
+ */
+ private boolean contains(String newFieldValue) {
+ UUID id = filterablePagingProvider.idFor(newFieldValue);
+ return id != null;
+ }
+
+
@Override
public boolean isValueInOptions(){
return lazySelect.getOptions().contains(lazySelect.getValue());