private MetadataEntity.Builder appendHelper(MetadataEntity.Builder builder, @Nullable String entityType, String key, String value) { if (entityType == null || entityType.isEmpty()) { // if a type is not provided then keep appending as type to update the type on every append return builder.appendAsType(key, value); } else { if (entityType.equalsIgnoreCase(key)) { // if a type was provided and this key is the type then appendAsType return builder.appendAsType(key, value); } else { return builder.append(key, value); } } }
private MetadataEntity.Builder appendHelper(MetadataEntity.Builder builder, @Nullable String entityType, String key, String value) { if (entityType == null || entityType.isEmpty()) { // if a type is not provided then keep appending as type to update the type on every append return builder.appendAsType(key, value); } else { if (entityType.equalsIgnoreCase(key)) { // if a type was provided and this key is the type then appendAsType return builder.appendAsType(key, value); } else { return builder.append(key, value); } } }
@Test public void testSearchOnTypes() throws Exception { MetadataStorage mds = getMetadataStorage(); MetadataEntity myDs = NamespaceId.DEFAULT.dataset("myDs").toMetadataEntity(); MetadataEntity myField1 = MetadataEntity.builder(myDs).appendAsType("field", "myField1").build(); MetadataEntity myField2 = MetadataEntity.builder(myDs).appendAsType("field", "myField2").build(); MetadataRecord record1 = new MetadataRecord(myField1, new Metadata(USER, props("testKey1", "testValue1"))); MetadataRecord record2 = new MetadataRecord(myField2, new Metadata(USER, props("testKey2", "testValue2"))); mds.apply(new Update(myField1, record1.getMetadata())); mds.apply(new Update(myField2, record2.getMetadata())); // Search for it based on value assertResults(mds, SearchRequest.of("field:myField1").build(), record1); // should return both fields assertResults(mds, SearchRequest.of("field:myFie*").build(), record1, record2); assertResults(mds, SearchRequest.of("field*").build(), record1, record2); // clean up mds.batch(ImmutableList.of(new Drop(myField1), new Drop(myField2))); }
@Test public void testToEntityId() { // should be able to get get an EntityId if Metadata belong to a cdap entity id DatasetId myDs = NamespaceId.DEFAULT.dataset("myDs"); MetadataDataset.Record metadata1 = new MetadataDataset.Record(myDs); Assert.assertEquals(myDs, metadata1.getEntityId()); MetadataEntity metadataEntity = MetadataEntity.builder(MetadataEntity.ofDataset(NamespaceId.DEFAULT.getEntityName(), "myDs")) .appendAsType("field", "myField").build(); MetadataDataset.Record metadata2 = new MetadataDataset.Record(metadataEntity); try { metadata2.getEntityId(); Assert.fail(); } catch (IllegalArgumentException e) { // expected } } }
/** * Creates a {@link MetadataEntity} representing the given datasetName in the specified namespace. * * @param namespace the name of the namespace * @param datasetName the name of the dataset * @return {@link MetadataEntity} representing the dataset name * @throws IllegalArgumentException if the key is a CDAP entity and the MetadataEntity is not correct to represent * the CDAP entity */ public static MetadataEntity ofDataset(String namespace, String datasetName) { return builder().append(MetadataEntity.NAMESPACE, namespace) .appendAsType(MetadataEntity.DATASET, datasetName).build(); }
@Override public MetadataEntity toMetadataEntity() { return MetadataEntity.builder().append(MetadataEntity.NAMESPACE, namespace).append(MetadataEntity.STREAM, stream) .appendAsType(MetadataEntity.VIEW, view) .build(); }
@Override public MetadataEntity toMetadataEntity() { return MetadataEntity.builder().append(MetadataEntity.NAMESPACE, namespace) .appendAsType(MetadataEntity.APPLICATION, application) .append(MetadataEntity.VERSION, version) .build(); }
/** * Creates a {@link MetadataEntity} representing the given namespace. * * @param namespace the name of the namespace * @return {@link MetadataEntity} representing the namespace name * @throws IllegalArgumentException if the key is a CDAP entity and the MetadataEntity is not correct to represent * the CDAP entity */ public static MetadataEntity ofNamespace(String namespace) { return builder().appendAsType(MetadataEntity.NAMESPACE, namespace).build(); }
@Override public MetadataEntity toMetadataEntity() { return MetadataEntity.builder().append(MetadataEntity.NAMESPACE, namespace) .append(MetadataEntity.APPLICATION, application) .append(MetadataEntity.VERSION, version).append(MetadataEntity.TYPE, type.getPrettyName()) .appendAsType(MetadataEntity.PROGRAM, program) .build(); }
@Override public MetadataEntity toMetadataEntity() { return MetadataEntity.builder().append(MetadataEntity.NAMESPACE, namespace) .append(MetadataEntity.APPLICATION, application).append(MetadataEntity.VERSION, version) .appendAsType(MetadataEntity.SCHEDULE, schedule) .build(); }
@Override public MetadataEntity toMetadataEntity() { return MetadataEntity.builder().append(MetadataEntity.NAMESPACE, namespace) .append(MetadataEntity.APPLICATION, application).append(MetadataEntity.VERSION, version) .append(MetadataEntity.FLOW, flow).appendAsType(MetadataEntity.FLOWLET, flowlet) .build(); }
@Override public MetadataEntity toMetadataEntity() { return MetadataEntity.builder().append(MetadataEntity.NAMESPACE, namespace) .appendAsType(MetadataEntity.ARTIFACT, artifact) .append(MetadataEntity.VERSION, version) .build(); }
/** * Creates a {@link MetadataEntity} representing the given datasetName. To create a {@link MetadataEntity} for a * dataset in a specified namespace please use {@link MetadataEntity#ofDataset(String, String)}. * * @param datasetName the name of the dataset * @return {@link MetadataEntity} representing the dataset name */ public static MetadataEntity ofDataset(String datasetName) { return builder().appendAsType(MetadataEntity.DATASET, datasetName).build(); }
@Override public MetadataEntity toMetadataEntity() { return MetadataEntity.builder().append(MetadataEntity.NAMESPACE, namespace) .appendAsType(MetadataEntity.APPLICATION, application) .append(MetadataEntity.VERSION, version) .build(); }
@Override public MetadataEntity toMetadataEntity() { return MetadataEntity.builder().append(MetadataEntity.NAMESPACE, namespace) .append(MetadataEntity.APPLICATION, application).append(MetadataEntity.VERSION, version) .appendAsType(MetadataEntity.SCHEDULE, schedule) .build(); }
@Override public MetadataEntity toMetadataEntity() { return MetadataEntity.builder().append(MetadataEntity.NAMESPACE, namespace) .append(MetadataEntity.APPLICATION, application) .append(MetadataEntity.VERSION, version).append(MetadataEntity.TYPE, type.getPrettyName()) .appendAsType(MetadataEntity.PROGRAM, program) .build(); }
@Override public MetadataEntity toMetadataEntity() { return MetadataEntity.builder().append(MetadataEntity.NAMESPACE, namespace) .append(MetadataEntity.APPLICATION, application) .append(MetadataEntity.VERSION, version).append(MetadataEntity.TYPE, type.getPrettyName()) .append(MetadataEntity.PROGRAM, program) .appendAsType(MetadataEntity.PROGRAM_RUN, run) .build(); }
@Override public MetadataEntity toMetadataEntity() { return MetadataEntity.builder().append(MetadataEntity.NAMESPACE, namespace) .appendAsType(MetadataEntity.STREAM, stream) .build(); }
@Override public MetadataEntity toMetadataEntity() { return MetadataEntity.builder().append(MetadataEntity.NAMESPACE, namespace) .append(MetadataEntity.APPLICATION, application) .append(MetadataEntity.VERSION, version).append(MetadataEntity.TYPE, type.getPrettyName()) .append(MetadataEntity.PROGRAM, program) .appendAsType(MetadataEntity.PROGRAM_RUN, run) .build(); }
@Override public MetadataEntity toMetadataEntity() { return MetadataEntity.builder().append(MetadataEntity.NAMESPACE, namespace) .appendAsType(MetadataEntity.ARTIFACT, artifact) .append(MetadataEntity.VERSION, version) .build(); }