77 lines
2.3 KiB
Java

package com.linkedin.common.urn;
import com.linkedin.common.AuditStamp;
import com.linkedin.common.FabricType;
import java.net.URISyntaxException;
import javax.annotation.Nonnull;
import javax.annotation.Nullable;
public class UrnUtils {
private static final CorpuserUrn UNKNOWN_ACTOR_URN = new CorpuserUrn("unknown");
private UrnUtils() {
}
/**
* Convert platform + dataset + origin into DatasetUrn
* @param platformName String, e.g. hdfs, oracle
* @param datasetName String, e.g. /jobs/xxx, ABOOK.ADDRESS
* @param origin PROD, CORP, EI, DEV
* @return DatasetUrn
*/
@Nonnull
public static DatasetUrn toDatasetUrn(@Nonnull String platformName, @Nonnull String datasetName,
@Nonnull String origin) {
return new DatasetUrn(new DataPlatformUrn(platformName), datasetName, toFabricType(origin));
}
/**
* Convert fabric String to FabricType
* @param fabric PROD, CORP, EI, DEV, LIT, PRIME
* @return FabricType
*/
@Nonnull
public static FabricType toFabricType(@Nonnull String fabric) {
switch (fabric.toUpperCase()) {
case "PROD":
return FabricType.PROD;
case "CORP":
return FabricType.CORP;
case "EI":
return FabricType.EI;
case "DEV":
return FabricType.DEV;
default:
throw new IllegalArgumentException("Unsupported Fabric Type: " + fabric);
}
}
public static Urn getUrn(String urnStr) {
try {
return Urn.createFromString(urnStr);
} catch (URISyntaxException e) {
throw new RuntimeException(String.format("Failed to retrieve entity with urn %s, invalid urn", urnStr));
}
}
/**
* Get audit stamp without time. If actor is null, set as Unknown Application URN.
* @param actor Urn
* @return AuditStamp
*/
@Nonnull
public static AuditStamp getAuditStamp(@Nullable Urn actor) {
return new AuditStamp().setActor(getActorOrDefault(actor));
}
/**
* Return actor URN, if input actor is null, return Unknown Application URN.
*/
@Nonnull
public static Urn getActorOrDefault(@Nullable Urn actor) {
return actor != null ? actor : UNKNOWN_ACTOR_URN;
}
}