lipdjs
Version:
A JavaScript library for reading and writing LiPD (Linked Paleo Data) files
1,337 lines (1,267 loc) • 46.8 kB
text/typescript
// Auto-generated. Do not edit.
import { uniqid } from "../utils/utils";
import { parseVariableValues } from "../utils/utils";
import { ArchiveType } from "./archivetype";
import { ChangeLog } from "./changelog";
import { ChronData } from "./chrondata";
import { Funding } from "./funding";
import { Location } from "./location";
import { PaleoData } from "./paleodata";
import { Person } from "./person";
import { Publication } from "./publication";
export class Dataset {
public archiveType: ArchiveType | null;
public changeLogs: ChangeLog[];
public chronData: ChronData[];
public collectionName: string | null;
public collectionYear: string | null;
public compilationNest: string | null;
public contributors: Person[];
public creators: Person[];
public dataSource: string | null;
public datasetId: string | null;
public fundings: Funding[];
public investigators: Person[];
public location: Location | null;
public name: string | null;
public notes: string | null;
public originalDataUrl: string | null;
public paleoData: PaleoData[];
public publications: Publication[];
public spreadsheetLink: string | null;
public version: string | null;
protected _id: string;
protected _type: string;
protected _misc: Record<string, any>;
protected _ontns: string;
protected _ns: string;
constructor() {
this.archiveType = null;
this.changeLogs = [];
this.chronData = [];
this.collectionName = null;
this.collectionYear = null;
this.compilationNest = null;
this.contributors = [];
this.creators = [];
this.dataSource = null;
this.datasetId = null;
this.fundings = [];
this.investigators = [];
this.location = null;
this.name = null;
this.notes = null;
this.originalDataUrl = null;
this.paleoData = [];
this.publications = [];
this.spreadsheetLink = null;
this.version = null;
this._misc = {};
this._ontns = "http://linked.earth/ontology#";
this._ns = "http://linked.earth/lipd";
this._type = "http://linked.earth/ontology#Dataset";
this._id = this._ns + "/" + uniqid("Dataset");
}
public getId(): string {
return this._id;
}
public getType(): string {
return this._type;
}
public getMisc(): Record<string, any> {
return this._misc;
}
public static fromDictionary(data: Record<string, any>): Dataset {
const thisObj = new Dataset();
thisObj._id = data._id;
thisObj._type = data._type;
thisObj._misc = data._misc;
thisObj._ontns = data._ontns;
thisObj._ns = data._ns;
if (data.archiveType !== null) {
thisObj.archiveType = new ArchiveType(data.archiveType.id, data.archiveType.label);
}
if (data.collectionName !== null) {
thisObj.collectionName = data.collectionName;
}
if (data.collectionYear !== null) {
thisObj.collectionYear = data.collectionYear;
}
if (data.compilationNest !== null) {
thisObj.compilationNest = data.compilationNest;
}
if (data.dataSource !== null) {
thisObj.dataSource = data.dataSource;
}
if (data.datasetId !== null) {
thisObj.datasetId = data.datasetId;
}
if (data.location !== null) {
thisObj.location = Location.fromDictionary(data.location);
}
if (data.name !== null) {
thisObj.name = data.name;
}
if (data.notes !== null) {
thisObj.notes = data.notes;
}
if (data.originalDataUrl !== null) {
thisObj.originalDataUrl = data.originalDataUrl;
}
if (data.spreadsheetLink !== null) {
thisObj.spreadsheetLink = data.spreadsheetLink;
}
if (data.version !== null) {
thisObj.version = data.version;
}
thisObj.changeLogs = [];
for (const value of (data.changeLogs || []) as any[]) {
thisObj.changeLogs.push(ChangeLog.fromDictionary(value));
}
thisObj.chronData = [];
for (const value of (data.chronData || []) as any[]) {
thisObj.chronData.push(ChronData.fromDictionary(value));
}
thisObj.contributors = [];
for (const value of (data.contributors || []) as any[]) {
thisObj.contributors.push(Person.fromDictionary(value));
}
thisObj.creators = [];
for (const value of (data.creators || []) as any[]) {
thisObj.creators.push(Person.fromDictionary(value));
}
thisObj.fundings = [];
for (const value of (data.fundings || []) as any[]) {
thisObj.fundings.push(Funding.fromDictionary(value));
}
thisObj.investigators = [];
for (const value of (data.investigators || []) as any[]) {
thisObj.investigators.push(Person.fromDictionary(value));
}
thisObj.paleoData = [];
for (const value of (data.paleoData || []) as any[]) {
thisObj.paleoData.push(PaleoData.fromDictionary(value));
}
thisObj.publications = [];
for (const value of (data.publications || []) as any[]) {
thisObj.publications.push(Publication.fromDictionary(value));
}
return thisObj;
}
public static fromData(id: string, data: Record<string, any>): Dataset {
const thisObj = new Dataset();
thisObj._id = id;
const mydata = data[id] as any;
for (const [key, value] of Object.entries(mydata)) {
if (key === "type") {
for (const val of value as any[]) {
thisObj._type = val["@id"];
}
continue;
}
else if (key === "hasArchiveType") {
for (const val of value as any[]) {
let obj: any = null;
obj = ArchiveType.fromSynonym(val["@id"].replace(/^.*?#/, ""));
thisObj.archiveType = obj;
}
}
else if (key === "hasChangeLog") {
thisObj.changeLogs = [];
for (const val of value as any[]) {
let obj: any = null;
if ("@id" in val) {
obj = ChangeLog.fromData(val["@id"], data);
} else {
obj = val["@value"];
}
thisObj.changeLogs.push(obj);
}
}
else if (key === "hasChronData") {
thisObj.chronData = [];
for (const val of value as any[]) {
let obj: any = null;
if ("@id" in val) {
obj = ChronData.fromData(val["@id"], data);
} else {
obj = val["@value"];
}
thisObj.chronData.push(obj);
}
}
else if (key === "hasCollectionName") {
for (const val of value as any[]) {
let obj: any = null;
if ("@value" in val) {
obj = val["@value"];
}
thisObj.collectionName = obj;
}
}
else if (key === "hasCollectionYear") {
for (const val of value as any[]) {
let obj: any = null;
if ("@value" in val) {
obj = val["@value"];
}
thisObj.collectionYear = obj;
}
}
else if (key === "hasCompilationNest") {
for (const val of value as any[]) {
let obj: any = null;
if ("@value" in val) {
obj = val["@value"];
}
thisObj.compilationNest = obj;
}
}
else if (key === "hasContributor") {
thisObj.contributors = [];
for (const val of value as any[]) {
let obj: any = null;
if ("@id" in val) {
obj = Person.fromData(val["@id"], data);
} else {
obj = val["@value"];
}
thisObj.contributors.push(obj);
}
}
else if (key === "hasCreator") {
thisObj.creators = [];
for (const val of value as any[]) {
let obj: any = null;
if ("@id" in val) {
obj = Person.fromData(val["@id"], data);
} else {
obj = val["@value"];
}
thisObj.creators.push(obj);
}
}
else if (key === "hasDataSource") {
for (const val of value as any[]) {
let obj: any = null;
if ("@value" in val) {
obj = val["@value"];
}
thisObj.dataSource = obj;
}
}
else if (key === "hasDatasetId") {
for (const val of value as any[]) {
let obj: any = null;
if ("@value" in val) {
obj = val["@value"];
}
thisObj.datasetId = obj;
}
}
else if (key === "hasFunding") {
thisObj.fundings = [];
for (const val of value as any[]) {
let obj: any = null;
if ("@id" in val) {
obj = Funding.fromData(val["@id"], data);
} else {
obj = val["@value"];
}
thisObj.fundings.push(obj);
}
}
else if (key === "hasInvestigator") {
thisObj.investigators = [];
for (const val of value as any[]) {
let obj: any = null;
if ("@id" in val) {
obj = Person.fromData(val["@id"], data);
} else {
obj = val["@value"];
}
thisObj.investigators.push(obj);
}
}
else if (key === "hasLocation") {
for (const val of value as any[]) {
let obj: any = null;
if ("@id" in val) {
obj = Location.fromData(val["@id"], data);
} else {
obj = val["@value"];
}
thisObj.location = obj;
}
}
else if (key === "hasName") {
for (const val of value as any[]) {
let obj: any = null;
if ("@value" in val) {
obj = val["@value"];
}
thisObj.name = obj;
}
}
else if (key === "hasNotes") {
for (const val of value as any[]) {
let obj: any = null;
if ("@value" in val) {
obj = val["@value"];
}
thisObj.notes = obj;
}
}
else if (key === "hasOriginalDataUrl") {
for (const val of value as any[]) {
let obj: any = null;
if ("@value" in val) {
obj = val["@value"];
}
thisObj.originalDataUrl = obj;
}
}
else if (key === "hasPaleoData") {
thisObj.paleoData = [];
for (const val of value as any[]) {
let obj: any = null;
if ("@id" in val) {
obj = PaleoData.fromData(val["@id"], data);
} else {
obj = val["@value"];
}
thisObj.paleoData.push(obj);
}
}
else if (key === "hasPublication") {
thisObj.publications = [];
for (const val of value as any[]) {
let obj: any = null;
if ("@id" in val) {
obj = Publication.fromData(val["@id"], data);
} else {
obj = val["@value"];
}
thisObj.publications.push(obj);
}
}
else if (key === "hasSpreadsheetLink") {
for (const val of value as any[]) {
let obj: any = null;
if ("@value" in val) {
obj = val["@value"];
}
thisObj.spreadsheetLink = obj;
}
}
else if (key === "hasVersion") {
for (const val of value as any[]) {
let obj: any = null;
if ("@value" in val) {
obj = val["@value"];
}
thisObj.version = obj;
}
}
else {
// Store unknown properties in misc
for (const val of value as any[]) {
let obj: any;
if ("@id" in val) {
obj = data[val["@id"]];
} else if ("@value" in val) {
obj = val["@value"];
}
thisObj._misc[key] = obj;
}
}
}
return thisObj;
}
public toData(data: Record<string, any> = {}): Record<string, any> {
data[this._id] = {};
data[this._id]["type"] = [
{
"@id": this._type,
"@type": "uri"
}
]
if (this.archiveType !== null) {
const valueObj = this.archiveType;
let obj: any = null;
if (typeof valueObj === "string") {
obj = {
"@value": valueObj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
} else {
obj = {
"@id": valueObj.getId(),
"@type": "uri"
}
data = valueObj.toData(data);
}
data[this._id]["hasArchiveType"] = [obj];
}
if (this.changeLogs.length > 0) {
data[this._id]["hasChangeLog"] = [];
for (const valueObj of this.changeLogs) {
let obj: any = null;
if (typeof valueObj === "string") {
obj = {
"@value": valueObj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
} else {
obj = {
"@id": valueObj.getId(),
"@type": "uri"
}
data = valueObj.toData(data);
}
data[this._id]["hasChangeLog"].push(obj);
}
}
if (this.chronData.length > 0) {
data[this._id]["hasChronData"] = [];
for (const valueObj of this.chronData) {
let obj: any = null;
if (typeof valueObj === "string") {
obj = {
"@value": valueObj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
} else {
obj = {
"@id": valueObj.getId(),
"@type": "uri"
}
data = valueObj.toData(data);
}
data[this._id]["hasChronData"].push(obj);
}
}
if (this.collectionName !== null) {
const valueObj = this.collectionName;
const obj = {
"@value": valueObj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
data[this._id]["hasCollectionName"] = [obj];
}
if (this.collectionYear !== null) {
const valueObj = this.collectionYear;
const obj = {
"@value": valueObj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
data[this._id]["hasCollectionYear"] = [obj];
}
if (this.compilationNest !== null) {
const valueObj = this.compilationNest;
const obj = {
"@value": valueObj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
data[this._id]["hasCompilationNest"] = [obj];
}
if (this.contributors.length > 0) {
data[this._id]["hasContributor"] = [];
for (const valueObj of this.contributors) {
let obj: any = null;
if (typeof valueObj === "string") {
obj = {
"@value": valueObj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
} else {
obj = {
"@id": valueObj.getId(),
"@type": "uri"
}
data = valueObj.toData(data);
}
data[this._id]["hasContributor"].push(obj);
}
}
if (this.creators.length > 0) {
data[this._id]["hasCreator"] = [];
for (const valueObj of this.creators) {
let obj: any = null;
if (typeof valueObj === "string") {
obj = {
"@value": valueObj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
} else {
obj = {
"@id": valueObj.getId(),
"@type": "uri"
}
data = valueObj.toData(data);
}
data[this._id]["hasCreator"].push(obj);
}
}
if (this.dataSource !== null) {
const valueObj = this.dataSource;
const obj = {
"@value": valueObj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
data[this._id]["hasDataSource"] = [obj];
}
if (this.datasetId !== null) {
const valueObj = this.datasetId;
const obj = {
"@value": valueObj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
data[this._id]["hasDatasetId"] = [obj];
}
if (this.fundings.length > 0) {
data[this._id]["hasFunding"] = [];
for (const valueObj of this.fundings) {
let obj: any = null;
if (typeof valueObj === "string") {
obj = {
"@value": valueObj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
} else {
obj = {
"@id": valueObj.getId(),
"@type": "uri"
}
data = valueObj.toData(data);
}
data[this._id]["hasFunding"].push(obj);
}
}
if (this.investigators.length > 0) {
data[this._id]["hasInvestigator"] = [];
for (const valueObj of this.investigators) {
let obj: any = null;
if (typeof valueObj === "string") {
obj = {
"@value": valueObj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
} else {
obj = {
"@id": valueObj.getId(),
"@type": "uri"
}
data = valueObj.toData(data);
}
data[this._id]["hasInvestigator"].push(obj);
}
}
if (this.location !== null) {
const valueObj = this.location;
let obj: any = null;
if (typeof valueObj === "string") {
obj = {
"@value": valueObj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
} else {
obj = {
"@id": valueObj.getId(),
"@type": "uri"
}
data = valueObj.toData(data);
}
data[this._id]["hasLocation"] = [obj];
}
if (this.name !== null) {
const valueObj = this.name;
const obj = {
"@value": valueObj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
data[this._id]["hasName"] = [obj];
}
if (this.notes !== null) {
const valueObj = this.notes;
const obj = {
"@value": valueObj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
data[this._id]["hasNotes"] = [obj];
}
if (this.originalDataUrl !== null) {
const valueObj = this.originalDataUrl;
const obj = {
"@value": valueObj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
data[this._id]["hasOriginalDataUrl"] = [obj];
}
if (this.paleoData.length > 0) {
data[this._id]["hasPaleoData"] = [];
for (const valueObj of this.paleoData) {
let obj: any = null;
if (typeof valueObj === "string") {
obj = {
"@value": valueObj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
} else {
obj = {
"@id": valueObj.getId(),
"@type": "uri"
}
data = valueObj.toData(data);
}
data[this._id]["hasPaleoData"].push(obj);
}
}
if (this.publications.length > 0) {
data[this._id]["hasPublication"] = [];
for (const valueObj of this.publications) {
let obj: any = null;
if (typeof valueObj === "string") {
obj = {
"@value": valueObj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
} else {
obj = {
"@id": valueObj.getId(),
"@type": "uri"
}
data = valueObj.toData(data);
}
data[this._id]["hasPublication"].push(obj);
}
}
if (this.spreadsheetLink !== null) {
const valueObj = this.spreadsheetLink;
const obj = {
"@value": valueObj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
data[this._id]["hasSpreadsheetLink"] = [obj];
}
if (this.version !== null) {
const valueObj = this.version;
const obj = {
"@value": valueObj,
"@type": "literal",
"@datatype": "http://www.w3.org/2001/XMLSchema#string"
}
data[this._id]["hasVersion"] = [obj];
}
// Add misc properties
for (const [key, value] of Object.entries(this._misc)) {
data[this._id][key] = [];
let ptype: string | null = null;
const tp = typeof value;
if (tp === "number") {
if (Number.isInteger(value)) {
ptype = "http://www.w3.org/2001/XMLSchema#integer";
} else {
ptype = "http://www.w3.org/2001/XMLSchema#float";
}
} else if (tp === "string") {
if (/\d{4}-\d{2}-\d{2}( |T)\d{2}:\d{2}:\d{2}/.test(value as string)) {
ptype = "http://www.w3.org/2001/XMLSchema#datetime";
} else if (/\d{4}-\d{2}-\d{2}/.test(value as string)) {
ptype = "http://www.w3.org/2001/XMLSchema#date";
} else {
ptype = "http://www.w3.org/2001/XMLSchema#string";
}
} else if (tp === "boolean") {
ptype = "http://www.w3.org/2001/XMLSchema#boolean";
}
data[this._id][key].push({
"@value": value,
"@type": "literal",
"@datatype": ptype
});
}
return data;
}
public toJson(): Record<string, any> {
const data: Record<string, any> = {
"@id": this._id
}
if (this.archiveType !== null) {
const valueObj = this.archiveType;
const obj = valueObj.toJson()
data["archiveType"] = obj;
}
if (this.changeLogs.length > 0) {
data["changelog"] = [];
for (const valueObj of this.changeLogs) {
const obj = valueObj.toJson()
data["changelog"].push(obj);
}
}
if (this.chronData.length > 0) {
data["chronData"] = [];
for (const valueObj of this.chronData) {
const obj = valueObj.toJson()
data["chronData"].push(obj);
}
}
if (this.collectionName !== null) {
const valueObj = this.collectionName;
const obj = valueObj
data["collectionName"] = obj;
}
if (this.collectionYear !== null) {
const valueObj = this.collectionYear;
const obj = valueObj
data["collectionYear"] = obj;
}
if (this.compilationNest !== null) {
const valueObj = this.compilationNest;
const obj = valueObj
data["compilation_nest"] = obj;
}
if (this.contributors.length > 0) {
data["dataContributor"] = [];
for (const valueObj of this.contributors) {
const obj = valueObj.toJson()
data["dataContributor"].push(obj);
}
}
if (this.creators.length > 0) {
data["creator"] = [];
for (const valueObj of this.creators) {
const obj = valueObj.toJson()
data["creator"].push(obj);
}
}
if (this.dataSource !== null) {
const valueObj = this.dataSource;
const obj = valueObj
data["dataSource"] = obj;
}
if (this.datasetId !== null) {
const valueObj = this.datasetId;
const obj = valueObj
data["datasetId"] = obj;
}
if (this.fundings.length > 0) {
data["funding"] = [];
for (const valueObj of this.fundings) {
const obj = valueObj.toJson()
data["funding"].push(obj);
}
}
if (this.investigators.length > 0) {
data["investigator"] = [];
for (const valueObj of this.investigators) {
const obj = valueObj.toJson()
data["investigator"].push(obj);
}
}
if (this.location !== null) {
const valueObj = this.location;
const obj = valueObj.toJson()
data["geo"] = obj;
}
if (this.name !== null) {
const valueObj = this.name;
const obj = valueObj
data["dataSetName"] = obj;
}
if (this.notes !== null) {
const valueObj = this.notes;
const obj = valueObj
data["notes"] = obj;
}
if (this.originalDataUrl !== null) {
const valueObj = this.originalDataUrl;
const obj = valueObj
data["originalDataURL"] = obj;
}
if (this.paleoData.length > 0) {
data["paleoData"] = [];
for (const valueObj of this.paleoData) {
const obj = valueObj.toJson()
data["paleoData"].push(obj);
}
}
if (this.publications.length > 0) {
data["pub"] = [];
for (const valueObj of this.publications) {
const obj = valueObj.toJson()
data["pub"].push(obj);
}
}
if (this.spreadsheetLink !== null) {
const valueObj = this.spreadsheetLink;
const obj = valueObj
data["googleSpreadSheetKey"] = obj;
}
if (this.version !== null) {
const valueObj = this.version;
const obj = valueObj
data["dataSetVersion"] = obj;
}
// Add misc properties
for (const [key, value] of Object.entries(this._misc)) {
data[key] = value;
}
return data;
}
public static fromJson(data: Record<string, any>): Dataset {
const thisObj = new Dataset();
for (const [key, pvalue] of Object.entries(data)) {
if (key === "@id") {
thisObj._id = pvalue as string;
continue;
}
if (key === "archiveType") {
let obj: any = null;
let value: any = pvalue;
obj = ArchiveType.fromSynonym(value.replace(/^.*?#/, ""))
thisObj.archiveType = obj;
continue;
}
if (key === "changelog") {
let obj: any = null;
thisObj.changeLogs = [];
for (const value of pvalue as any[]) {
obj = ChangeLog.fromJson(value)
thisObj.changeLogs.push(obj);
}
continue;
}
if (key === "chronData") {
let obj: any = null;
thisObj.chronData = [];
for (const value of pvalue as any[]) {
obj = ChronData.fromJson(value)
thisObj.chronData.push(obj);
}
continue;
}
if (key === "collectionName") {
let obj: any = null;
let value: any = pvalue;
obj = value
thisObj.collectionName = obj;
continue;
}
if (key === "collectionYear") {
let obj: any = null;
let value: any = pvalue;
obj = value
thisObj.collectionYear = obj;
continue;
}
if (key === "compilation_nest") {
let obj: any = null;
let value: any = pvalue;
obj = value
thisObj.compilationNest = obj;
continue;
}
if (key === "creator") {
let obj: any = null;
thisObj.creators = [];
for (const value of pvalue as any[]) {
obj = Person.fromJson(value)
thisObj.creators.push(obj);
}
continue;
}
if (key === "dataContributor") {
let obj: any = null;
thisObj.contributors = [];
for (const value of pvalue as any[]) {
obj = Person.fromJson(value)
thisObj.contributors.push(obj);
}
continue;
}
if (key === "dataSetName") {
let obj: any = null;
let value: any = pvalue;
obj = value
thisObj.name = obj;
continue;
}
if (key === "dataSetVersion") {
let obj: any = null;
let value: any = pvalue;
obj = value
thisObj.version = obj;
continue;
}
if (key === "dataSource") {
let obj: any = null;
let value: any = pvalue;
obj = value
thisObj.dataSource = obj;
continue;
}
if (key === "datasetId") {
let obj: any = null;
let value: any = pvalue;
obj = value
thisObj.datasetId = obj;
continue;
}
if (key === "funding") {
let obj: any = null;
thisObj.fundings = [];
for (const value of pvalue as any[]) {
obj = Funding.fromJson(value)
thisObj.fundings.push(obj);
}
continue;
}
if (key === "geo") {
let obj: any = null;
let value: any = pvalue;
obj = Location.fromJson(value)
thisObj.location = obj;
continue;
}
if (key === "googleSpreadSheetKey") {
let obj: any = null;
let value: any = pvalue;
obj = value
thisObj.spreadsheetLink = obj;
continue;
}
if (key === "investigator") {
let obj: any = null;
thisObj.investigators = [];
for (const value of pvalue as any[]) {
obj = Person.fromJson(value)
thisObj.investigators.push(obj);
}
continue;
}
if (key === "notes") {
let obj: any = null;
let value: any = pvalue;
obj = value
thisObj.notes = obj;
continue;
}
if (key === "originalDataURL") {
let obj: any = null;
let value: any = pvalue;
obj = value
thisObj.originalDataUrl = obj;
continue;
}
if (key === "paleoData") {
let obj: any = null;
thisObj.paleoData = [];
for (const value of pvalue as any[]) {
obj = PaleoData.fromJson(value)
thisObj.paleoData.push(obj);
}
continue;
}
if (key === "pub") {
let obj: any = null;
thisObj.publications = [];
for (const value of pvalue as any[]) {
obj = Publication.fromJson(value)
thisObj.publications.push(obj);
}
continue;
}
// Store unknown properties in misc
thisObj._misc[key] = pvalue;
}
return thisObj;
}
public setNonStandardProperty(key: string, value: unknown): void {
this._misc[key] = value;
}
public getNonStandardProperty(key: string): unknown {
return this._misc[key];
}
public getAllNonStandardProperties(): Record<string, unknown> {
return this._misc;
}
public addNonStandardProperty(key: string, value: unknown): void {
if (!(key in this._misc)) {
this._misc[key] = [];
}
(this._misc[key] as unknown[]).push(value);
}
getArchiveType(): ArchiveType | null {
return this.archiveType;
}
setArchiveType(archiveType: ArchiveType): void {
// if (!(archiveType instanceof ArchiveType)) {
// throw new Error(`Error: '${archiveType}' is not of type ArchiveType\nYou can create a new ArchiveType object from a string using the following syntax:\n- Fetch existing ArchiveType by synonym: ArchiveType.fromSynonym("${archiveType}")\n- Create a new custom ArchiveType: new ArchiveType("${archiveType}")`);
// }
this.archiveType = archiveType;
}
getChangeLogs(): ChangeLog[] {
return this.changeLogs;
}
setChangeLogs(changeLogs: ChangeLog[]): void {
// if (!Array.isArray(changeLogs)) {
// throw new Error("Error: changeLogs is not an array");
// }
// if (!changeLogs.every(x => x instanceof ChangeLog)) {
// throw new Error(`Error: '${changeLogs}' is not of type ChangeLog`);
// }
this.changeLogs = changeLogs;
}
addChangeLog(changeLogs: ChangeLog): void {
// if (!(changeLogs instanceof ChangeLog)) {
// throw new Error(`Error: '${changeLogs}' is not of type ChangeLog`);
// }
this.changeLogs.push(changeLogs);
}
getChronData(): ChronData[] {
return this.chronData;
}
setChronData(chronData: ChronData[]): void {
// if (!Array.isArray(chronData)) {
// throw new Error("Error: chronData is not an array");
// }
// if (!chronData.every(x => x instanceof ChronData)) {
// throw new Error(`Error: '${chronData}' is not of type ChronData`);
// }
this.chronData = chronData;
}
addChronData(chronData: ChronData): void {
// if (!(chronData instanceof ChronData)) {
// throw new Error(`Error: '${chronData}' is not of type ChronData`);
// }
this.chronData.push(chronData);
}
getCollectionName(): string | null {
return this.collectionName;
}
setCollectionName(collectionName: string): void {
// if (!(collectionName instanceof string)) {
// throw new Error(`Error: '${collectionName}' is not of type string`);
// }
this.collectionName = collectionName;
}
getCollectionYear(): string | null {
return this.collectionYear;
}
setCollectionYear(collectionYear: string): void {
// if (!(collectionYear instanceof string)) {
// throw new Error(`Error: '${collectionYear}' is not of type string`);
// }
this.collectionYear = collectionYear;
}
getCompilationNest(): string | null {
return this.compilationNest;
}
setCompilationNest(compilationNest: string): void {
// if (!(compilationNest instanceof string)) {
// throw new Error(`Error: '${compilationNest}' is not of type string`);
// }
this.compilationNest = compilationNest;
}
getContributors(): Person[] {
return this.contributors;
}
setContributors(contributors: Person[]): void {
// if (!Array.isArray(contributors)) {
// throw new Error("Error: contributors is not an array");
// }
// if (!contributors.every(x => x instanceof Person)) {
// throw new Error(`Error: '${contributors}' is not of type Person`);
// }
this.contributors = contributors;
}
addContributor(contributors: Person): void {
// if (!(contributors instanceof Person)) {
// throw new Error(`Error: '${contributors}' is not of type Person`);
// }
this.contributors.push(contributors);
}
getCreators(): Person[] {
return this.creators;
}
setCreators(creators: Person[]): void {
// if (!Array.isArray(creators)) {
// throw new Error("Error: creators is not an array");
// }
// if (!creators.every(x => x instanceof Person)) {
// throw new Error(`Error: '${creators}' is not of type Person`);
// }
this.creators = creators;
}
addCreator(creators: Person): void {
// if (!(creators instanceof Person)) {
// throw new Error(`Error: '${creators}' is not of type Person`);
// }
this.creators.push(creators);
}
getDataSource(): string | null {
return this.dataSource;
}
setDataSource(dataSource: string): void {
// if (!(dataSource instanceof string)) {
// throw new Error(`Error: '${dataSource}' is not of type string`);
// }
this.dataSource = dataSource;
}
getDatasetId(): string | null {
return this.datasetId;
}
setDatasetId(datasetId: string): void {
// if (!(datasetId instanceof string)) {
// throw new Error(`Error: '${datasetId}' is not of type string`);
// }
this.datasetId = datasetId;
}
getFundings(): Funding[] {
return this.fundings;
}
setFundings(fundings: Funding[]): void {
// if (!Array.isArray(fundings)) {
// throw new Error("Error: fundings is not an array");
// }
// if (!fundings.every(x => x instanceof Funding)) {
// throw new Error(`Error: '${fundings}' is not of type Funding`);
// }
this.fundings = fundings;
}
addFunding(fundings: Funding): void {
// if (!(fundings instanceof Funding)) {
// throw new Error(`Error: '${fundings}' is not of type Funding`);
// }
this.fundings.push(fundings);
}
getInvestigators(): Person[] {
return this.investigators;
}
setInvestigators(investigators: Person[]): void {
// if (!Array.isArray(investigators)) {
// throw new Error("Error: investigators is not an array");
// }
// if (!investigators.every(x => x instanceof Person)) {
// throw new Error(`Error: '${investigators}' is not of type Person`);
// }
this.investigators = investigators;
}
addInvestigator(investigators: Person): void {
// if (!(investigators instanceof Person)) {
// throw new Error(`Error: '${investigators}' is not of type Person`);
// }
this.investigators.push(investigators);
}
getLocation(): Location | null {
return this.location;
}
setLocation(location: Location): void {
// if (!(location instanceof Location)) {
// throw new Error(`Error: '${location}' is not of type Location`);
// }
this.location = location;
}
getName(): string | null {
return this.name;
}
setName(name: string): void {
// if (!(name instanceof string)) {
// throw new Error(`Error: '${name}' is not of type string`);
// }
this.name = name;
this._id = this._ns + '/' + name; // This is a hack to set the id of the dataset based on the name
}
getNotes(): string | null {
return this.notes;
}
setNotes(notes: string): void {
// if (!(notes instanceof string)) {
// throw new Error(`Error: '${notes}' is not of type string`);
// }
this.notes = notes;
}
getOriginalDataUrl(): string | null {
return this.originalDataUrl;
}
setOriginalDataUrl(originalDataUrl: string): void {
// if (!(originalDataUrl instanceof string)) {
// throw new Error(`Error: '${originalDataUrl}' is not of type string`);
// }
this.originalDataUrl = originalDataUrl;
}
getPaleoData(): PaleoData[] {
return this.paleoData;
}
setPaleoData(paleoData: PaleoData[]): void {
// if (!Array.isArray(paleoData)) {
// throw new Error("Error: paleoData is not an array");
// }
// if (!paleoData.every(x => x instanceof PaleoData)) {
// throw new Error(`Error: '${paleoData}' is not of type PaleoData`);
// }
this.paleoData = paleoData;
}
addPaleoData(paleoData: PaleoData): void {
// if (!(paleoData instanceof PaleoData)) {
// throw new Error(`Error: '${paleoData}' is not of type PaleoData`);
// }
this.paleoData.push(paleoData);
}
getPublications(): Publication[] {
return this.publications;
}
setPublications(publications: Publication[]): void {
// if (!Array.isArray(publications)) {
// throw new Error("Error: publications is not an array");
// }
// if (!publications.every(x => x instanceof Publication)) {
// throw new Error(`Error: '${publications}' is not of type Publication`);
// }
this.publications = publications;
}
addPublication(publications: Publication): void {
// if (!(publications instanceof Publication)) {
// throw new Error(`Error: '${publications}' is not of type Publication`);
// }
this.publications.push(publications);
}
getSpreadsheetLink(): string | null {
return this.spreadsheetLink;
}
setSpreadsheetLink(spreadsheetLink: string): void {
// if (!(spreadsheetLink instanceof string)) {
// throw new Error(`Error: '${spreadsheetLink}' is not of type string`);
// }
this.spreadsheetLink = spreadsheetLink;
}
getVersion(): string | null {
return this.version;
}
setVersion(version: string): void {
// if (!(version instanceof string)) {
// throw new Error(`Error: '${version}' is not of type string`);
// }
this.version = version;
}
}