// -*- mode: java; c-basic-offset: 2; -*-
// Copyright 2015 MIT, All rights reserved
// Released under the Apache License, Version 2.0
// http://www.apache.org/licenses/LICENSE-2.0
package com.google.appinventor.shared.rpc.component;
import com.google.gwt.user.client.rpc.IsSerializable;
import com.google.common.primitives.Longs;
/**
* Component stored in the server
*/
public class Component implements IsSerializable {
private long id;
private String authorId;
private String fullyQualifiedName;
private String name;
private long version;
private static final String DELIM = "#DELIM#";
public Component() {
// no-op
}
public Component(long id, String authorId, String fullyQualifiedName, long version) {
set(id, authorId, fullyQualifiedName, version);
}
public long getId() {
return id;
}
public String getAuthorId() {
return authorId;
}
public String getFullyQualifiedName() {
return fullyQualifiedName;
}
public String getName() {
return name;
}
public long getVersion() {
return version;
}
public void set(long id, String authorId, String fullyQualifiedName, long version) {
this.id = id;
this.authorId = authorId;
this.fullyQualifiedName = fullyQualifiedName;
this.name = fullyQualifiedName.substring(fullyQualifiedName.lastIndexOf(".") + 1);
this.version = version;
}
public static Component valueOf(String text) {
String[] parts = text.split(DELIM);
if (parts.length != 4) {
throw new IllegalArgumentException("text should have 4 parts.");
}
Long id = Longs.tryParse(parts[0]);
String authorId = parts[1];
String fullyQualifiedName = parts[2];
Long version = Longs.tryParse(parts[3]);
if (id == null) {
throw new IllegalArgumentException("id is not parsable.");
}
if (version == null) {
throw new IllegalArgumentException("version is not parsable.");
}
return new Component(id, authorId, fullyQualifiedName, version);
}
@Override
public String toString() {
return getId() + DELIM + getAuthorId() + DELIM + getFullyQualifiedName() +
DELIM + getVersion();
}
}