com.aliyun.odps.TableLifecycleConfig Maven / Gradle / Ivy
package com.aliyun.odps;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import java.util.HashMap;
import java.util.Map;
/**
* @author wenyu
* @date 2024/1/30 19:04
*/
public class TableLifecycleConfig {
public enum TableLifecycleConfigItemEnum {
/**
* condition types to set lifecycle for tiered storage table
* */
DaysAfterLastModificationGreaterThan("DaysAfterLastModificationGreaterThan"),
DaysAfterLastAccessGreaterThan("DaysAfterLastAccessGreaterThan"),
DaysAfterLastTierModificationGreaterThan("DaysAfterLastTierModificationGreaterThan");
private final String name;
TableLifecycleConfigItemEnum(String name) {
this.name = name;
}
public String getName() {
return name;
}
public static TableLifecycleConfigItemEnum getByName(String name) {
for (TableLifecycleConfigItemEnum item : TableLifecycleConfigItemEnum.values()) {
if (item.getName().equals(name)) {
return item;
}
}
return null;
}
}
/**
* conditions to change storage type to low frequency storage
*/
private Map tierToLowFrequency;
/**
* conditions to change storage type to longterm storage
*/
private Map tierToLongterm;
public Map getTierToLowFrequency() {
return tierToLowFrequency;
}
public Map getTierToLongTerm() {
return tierToLongterm;
}
/**
* parse TableLifecycleConfigItem instance by json string
*
* @param jsonStr json string
* */
public static TableLifecycleConfig parse(String jsonStr){
JsonObject jsonObject = new JsonParser().parse(jsonStr).getAsJsonObject();
return parse(jsonObject);
}
public static TableLifecycleConfig parse(JsonObject jsonObject) {
if (jsonObject == null || jsonObject.has("LifecycleConfig") == false) {
return null;
}
TableLifecycleConfig tableLifecycleConfig = new TableLifecycleConfig();
String lifecycleConfigJson = jsonObject.get("LifecycleConfig").getAsString();
JsonObject lifecycleConfig = new JsonParser().parse(lifecycleConfigJson).getAsJsonObject();
//
if (lifecycleConfig.has("TierToLowFrequency")) {
JsonObject tierToLowFrequency = lifecycleConfig.getAsJsonObject("TierToLowFrequency");
tableLifecycleConfig.tierToLowFrequency = parseTableLifecycleConfigItem(tierToLowFrequency);
}
if (lifecycleConfig.has("TierToLongterm")) {
JsonObject tierToLongTerm = lifecycleConfig.getAsJsonObject("TierToLongterm");
tableLifecycleConfig.tierToLongterm = parseTableLifecycleConfigItem(tierToLongTerm);
}
//
return tableLifecycleConfig;
}
private static Map parseTableLifecycleConfigItem(JsonObject jsonObject) {
Map tableLifecycleConfigItem = new HashMap<>();
if (jsonObject == null ) {
return tableLifecycleConfigItem;
}
for (TableLifecycleConfigItemEnum item : TableLifecycleConfigItemEnum.values()) {
if (jsonObject.has(item.getName())) {
tableLifecycleConfigItem.put(item.getName(), jsonObject.get(item.getName()).getAsString());
}
}
//
return tableLifecycleConfigItem;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy