diff options
Diffstat (limited to 'src/main/java/com/android/vts/entity/BuildTargetEntity.java')
-rw-r--r-- | src/main/java/com/android/vts/entity/BuildTargetEntity.java | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/main/java/com/android/vts/entity/BuildTargetEntity.java b/src/main/java/com/android/vts/entity/BuildTargetEntity.java index ddcd4f8..b204d0c 100644 --- a/src/main/java/com/android/vts/entity/BuildTargetEntity.java +++ b/src/main/java/com/android/vts/entity/BuildTargetEntity.java @@ -19,9 +19,22 @@ package com.android.vts.entity; import com.google.appengine.api.datastore.Entity; import com.google.appengine.api.datastore.Key; import com.google.appengine.api.datastore.KeyFactory; +import com.googlecode.objectify.annotation.Cache; +import com.googlecode.objectify.annotation.Id; +import lombok.Data; +import lombok.NoArgsConstructor; + +import java.util.List; import java.util.logging.Level; import java.util.logging.Logger; +import java.util.stream.Collectors; + +import static com.googlecode.objectify.ObjectifyService.ofy; +@com.googlecode.objectify.annotation.Entity(name = "BuildTarget") +@Cache +@Data +@NoArgsConstructor /** Entity describing a build target. */ public class BuildTargetEntity implements DashboardEntity { protected static final Logger logger = Logger.getLogger(BuildTargetEntity.class.getName()); @@ -30,6 +43,8 @@ public class BuildTargetEntity implements DashboardEntity { public Key key; // The key for the entity in the database. + @Id private String name; + /** * Create a BuildTargetEntity object. * @@ -44,6 +59,39 @@ public class BuildTargetEntity implements DashboardEntity { return new Entity(this.key); } + /** find by Build Target Name */ + public static List<String> getByBuildTarget(String buildTargetName) { + if (buildTargetName.equals("*")) { + return ofy().load() + .type(BuildTargetEntity.class) + .limit(100) + .list() + .stream() + .map(b -> b.name) + .collect(Collectors.toList()); + } else { + com.googlecode.objectify.Key startKey = + com.googlecode.objectify.Key.create(BuildTargetEntity.class, buildTargetName); + + int lastPosition = buildTargetName.length() - 1; + int lastCharValue = buildTargetName.charAt(lastPosition); + String nextChar = String.valueOf((char) (lastCharValue + 1)); + + String nextBuildTargetName = buildTargetName.substring(0, lastPosition) + nextChar; + com.googlecode.objectify.Key endKey = + com.googlecode.objectify.Key.create( + BuildTargetEntity.class, nextBuildTargetName); + return ofy().load() + .type(BuildTargetEntity.class) + .filterKey(">=", startKey) + .filterKey("<", endKey) + .list() + .stream() + .map(b -> b.name) + .collect(Collectors.toList()); + } + } + /** * Convert an Entity object to a BuildTargetEntity. * |