package com.qubling.sidekick.instance;
import com.qubling.sidekick.model.Model;
import com.qubling.sidekick.search.Schema;
import android.os.Parcel;
import android.os.Parcelable;
public class Module extends Instance<Module> {
private String name;
private String moduleAbstract; // keywords clashing with variable names? tsk, tsk... #NeedPerlSigils
private String rawPod;
private Release release;
public Module(Model<Module> model, String name) {
super(model);
this.name = name;
}
public Module(Parcel in) {
name = in.readString();
moduleAbstract = in.readString();
rawPod = in.readString();
release = in.readParcelable(Module.class.getClassLoader());
}
@Override
public String getKey() {
return name;
}
public String getName() {
return name;
}
public String getModuleAbstract() {
return moduleAbstract;
}
public void setModuleAbstract(String moduleAbstract) {
this.moduleAbstract = moduleAbstract;
}
public String getRawPod() {
return rawPod;
}
public void setRawPod(String rawPod) {
this.rawPod = rawPod;
}
public String getReleaseName() {
return release == null ? null : release.getName();
}
public void setReleaseName(String name) {
release = getModel().getSchema().getReleaseModel().acquireInstance(name);
}
public Release getRelease() {
return release;
}
public void setRelease(Release release) {
this.release = release;
}
public String getAuthorPauseId() {
return release == null ? null : release.getAuthorPauseId();
}
public Author getAuthor() {
return release == null ? null : release.getAuthor();
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeString(name);
out.writeString(moduleAbstract);
out.writeString(rawPod);
out.writeParcelable(release, flags);
}
public static final Parcelable.Creator<Module> CREATOR
= new Parcelable.Creator<Module>() {
@Override
public Module createFromParcel(Parcel in) {
return new Module(in);
}
@Override
public Module[] newArray(int size) {
return new Module[size];
}
};
@Override
public void attachRelatedModels(Schema schema) {
if (release != null) {
release.attachToModel(schema.getReleaseModel());
}
}
@Override
public void addToCache() {
getModel().cache(this);
if (release != null)
release.addToCache();
}
@Override
public String toString() {
return "Module(" + getName() + ")";
}
}