
automately.core.data.Meta Maven / Gradle / Ivy
package automately.core.data;
import com.hazelcast.nio.ObjectDataInput;
import com.hazelcast.nio.ObjectDataOutput;
import io.jcluster.core.data.DataType;
import io.jsync.json.JsonObject;
import io.jsync.json.impl.Json;
import io.jsync.utils.Token;
import java.io.IOException;
import java.util.Date;
/**
* The Meta class is a DataType used by JCluster.
* It's main purpose is to store any extra data belonging to a user
* or any other object.
*/
public class Meta extends DataType {
public String userToken;
public String key;
public Object value;
public Date created = new Date();
public Date updated = new Date();
private String token = Token.generateToken().toHex();
public Meta() {
this("", "");
}
public Meta(String key, Object value) {
this.key = key;
this.value = value;
}
@Override
public void writeData(ObjectDataOutput dataOutput) throws IOException {
dataOutput.writeUTF(token);
dataOutput.writeUTF(userToken);
dataOutput.writeUTF(key);
dataOutput.writeObject(value);
dataOutput.writeObject(created);
dataOutput.writeObject(updated);
}
@Override
public void readData(ObjectDataInput dataInput) throws IOException {
token = dataInput.readUTF();
userToken = dataInput.readUTF();
key = dataInput.readUTF();
value = dataInput.readObject();
created = dataInput.readObject();
updated = dataInput.readObject();
}
@Override
public void loadJson(JsonObject json) {
if (json != null) {
this.token = json.getString("token", this.token);
this.userToken = json.getString("userToken", this.userToken);
this.key = json.getString("key", this.key);
this.value = json.getValue("value");
// For some reason data didn't work out too well
if(json.getValue("created") instanceof JsonObject &&
json.getObject("created", new JsonObject()).containsField("$numberLong")){
json.putValue("created", Long.valueOf(json.getObject("created", new JsonObject()).getValue("$numberLong")));
}
this.created = new Date(json.getLong("created", created.getTime()));
// For some reason data didn't work out too well
if(json.getValue("updated") instanceof JsonObject &&
json.getObject("updated", new JsonObject()).containsField("$numberLong")){
json.putValue("updated", Long.valueOf(json.getObject("updated", new JsonObject()).getValue("$numberLong")));
}
this.updated = new Date(json.getLong("updated", updated.getTime()));
}
}
@Override
public JsonObject toJson() {
JsonObject ret = new JsonObject(Json.encode(this));
ret.putString("token", token);
ret.putNumber("created", created.getTime());
ret.putNumber("updated", updated.getTime());
return ret;
}
public String token() {
return token;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy