package com.eduworks.russel.ui.client.model; import java.util.Date; import java.util.HashMap; import com.eduworks.gwt.client.model.Record; import com.eduworks.gwt.client.net.packet.ESBPacket; import com.google.gwt.json.client.JSONArray; import com.google.gwt.json.client.JSONObject; import com.google.gwt.json.client.JSONString; public abstract class FileRecord extends Record { public final static String FILENAME = "fileName_s"; public final static String FILENAME2 = "fileName_t"; public final static String DESCRIPTION = "description_txt_en"; public final static String DESCRIPTION2 = "description_t"; public final static String MIMETYPE = "mimeType_s"; public final static String MIMETYPE2 = "mimeType_t"; public final static String TITLE = "title_txt_en"; public final static String TITLE2 = "title_t"; public final static String CREATED_BY = "createdBy_s"; public final static String CREATED_BY2 = "createdBy_t"; public final static String PUBLISHER = "publisher_txt_en"; public final static String PUBLISHER2 = "publisher_t"; public final static String CLASSIFICATION = "classification_txt_en"; public final static String CLASSIFICATION2 = "classification_t"; public final static String ENVIRONMENT = "environment_txt_en"; public final static String ENVIRONMENT2 = "environment_t"; public final static String COVERAGE = "coverage_txt_en"; public final static String COVERAGE2 = "coverage_t"; public final static String LANGUAGE = "language_s"; public final static String LANGUAGE2 = "language_t"; public final static String TECHNICAL_REQUIREMENTS = "technicalRequirements_txt_en"; public final static String TECHNICAL_REQUIREMENTS2 = "technicalRequirements_t"; public final static String DISTRIBUTION = "distribution_txt_en"; public final static String DISTRIBUTION2 = "distribution_t"; public final static String VERSION = "version_s"; public final static String VERSION2 = "version_t"; public final static String THUMBNAIL = "thumbnail_s"; public final static String THUMBNAIL2 = "thumbnail_t"; public final static String PART_OF = "partOf_txt_en"; public final static String PART_OF2 = "partOf_t"; public final static String REQUIRES = "requires_txt_en"; public final static String REQUIRES2 = "requires_t"; public final static String OWNER = "uploadedBy_s"; public final static String OWNER2 = "uploadedBy_t"; public final static String GROUPS = "sharedBy_s"; public final static String GROUPS2 = "sharedBy_t"; public final static String INTERACTIVITY = "interactivity_txt_en"; public final static String INTERACTIVITY2 = "interactivity_t"; public final static String LEVEL = "level_s"; public final static String LEVEL2 = "level_t"; public final static String KEYWORDS = "keywords_txt_en"; public final static String KEYWORDS2 = "keywords_t"; public final static String OBJECTIVES = "attr_objective"; public final static String OBJECTIVES2 = "objective_t"; public final static String FILE_CONTENT = "fileContent_txt_en"; public final static String FILE_CONTENT2 = "fileContent_t"; public final static String FOUO = "fouo_b"; public final static String COMMENTS = "comments"; public final static String RATING = "rating_f"; public final static String VOTES = "votes_l"; public final static String SKILL = "skill_txt_en"; public final static String SKILL2 = "skill_t"; public final static String VIEW = "view_l"; public final static String DOWNLOADS = "downloads_l"; public final static String FILESIZE_BYTES = "fileSizeBytes_l"; public final static String DURATION = "duration_f"; public final static String UPDATED_DATE = "updatedDate_l"; public final static String UPLOAD_DATE = "uploadDate_l"; public final static String COMMENT_COUNT = "commentCount_l"; public String getFieldList() { return FILENAME + " " + DESCRIPTION + " " + MIMETYPE + " " + TITLE + " " + CREATED_BY + " " + PUBLISHER + " " + CLASSIFICATION + " " + ENVIRONMENT + " " + COVERAGE + " " + LANGUAGE + " " + TECHNICAL_REQUIREMENTS + " " + DISTRIBUTION + " " + VERSION + " " + THUMBNAIL + " " + PART_OF + " " + REQUIRES + " " + OWNER + " "+ GROUPS + " " + INTERACTIVITY + " " + LEVEL + " " + KEYWORDS + " " + OBJECTIVES + " " + FILE_CONTENT + " " + FOUO + " " + SKILL + " " + VIEW + " " + DOWNLOADS + " " + FILESIZE_BYTES + " " + DURATION + " " + UPLOAD_DATE + " " + UPDATED_DATE + " " + RATING + " " + VOTES + " " + COMMENT_COUNT; } private String filename = ""; private String description = ""; private String mimeType = ""; private String title = ""; private String createdBy = ""; private String publisher = ""; private String classification = ""; private String activity = ""; private String environment = ""; private String coverage = ""; private String language = ""; private String technicalRequirements = ""; private String distribution = ""; private String version = ""; private String thumbnail = ""; private String skill = ""; private String partOf = ""; private String requires = ""; private String owner = ""; private String groups = ""; private String interactivity = ""; private String level = ""; private String keywords = ""; private String updatedDateStr = ""; private String fileContents = ""; private String uploadDateStr = ""; private Boolean fouo = false; private HashMap<String, CommentRecord> comments = new HashMap<String, CommentRecord>(); private JSONArray objectives = new JSONArray(); private int votes = 0; private int view = 0; private int downloads = 0; private int filesize = 0; private double duration = 0.0; private int commentCount = 0; private double rating = 2.5; public FileRecord() { } public FileRecord(ESBPacket metaDataPack) { parseESBPacket(metaDataPack); } public void parseESBPacket(ESBPacket metaDataPack) { ESBPacket esbPacket; if (metaDataPack.containsKey("obj")) esbPacket = new ESBPacket(metaDataPack.get("obj").isObject()); else esbPacket = metaDataPack; if (esbPacket.containsKey(FILENAME)) filename = esbPacket.getString(FILENAME); if (esbPacket.containsKey(FILENAME2)) filename = esbPacket.getString(FILENAME2); if (esbPacket.containsKey(ID)) setGuid(esbPacket.getString(ID)); if (esbPacket.containsKey(DESCRIPTION)) description = esbPacket.getString(DESCRIPTION); if (esbPacket.containsKey(DESCRIPTION2)) description = esbPacket.getString(DESCRIPTION2); if (esbPacket.containsKey(MIMETYPE)) mimeType = esbPacket.getString(MIMETYPE); if (esbPacket.containsKey(MIMETYPE2)) mimeType = esbPacket.getString(MIMETYPE2); if (esbPacket.containsKey(TITLE)) title = esbPacket.getString(TITLE); if (esbPacket.containsKey(TITLE2)) title = esbPacket.getString(TITLE2); if (esbPacket.containsKey(CREATED_BY)) createdBy = esbPacket.getString(CREATED_BY); if (esbPacket.containsKey(CREATED_BY2)) createdBy = esbPacket.getString(CREATED_BY2); if (esbPacket.containsKey(PUBLISHER)) publisher = esbPacket.getString(PUBLISHER); if (esbPacket.containsKey(PUBLISHER2)) publisher = esbPacket.getString(PUBLISHER2); if (esbPacket.containsKey(CLASSIFICATION)) classification = esbPacket.getString(CLASSIFICATION); if (esbPacket.containsKey(CLASSIFICATION2)) classification = esbPacket.getString(CLASSIFICATION2); if (esbPacket.containsKey(ENVIRONMENT)) environment = esbPacket.getString(ENVIRONMENT); if (esbPacket.containsKey(ENVIRONMENT2)) environment = esbPacket.getString(ENVIRONMENT2); if (esbPacket.containsKey(COVERAGE)) coverage = esbPacket.getString(COVERAGE); if (esbPacket.containsKey(COVERAGE2)) coverage = esbPacket.getString(COVERAGE2); if (esbPacket.containsKey(LANGUAGE)) language = esbPacket.getString(LANGUAGE); if (esbPacket.containsKey(LANGUAGE2)) language = esbPacket.getString(LANGUAGE2); if (esbPacket.containsKey(TECHNICAL_REQUIREMENTS)) technicalRequirements = esbPacket.getString(TECHNICAL_REQUIREMENTS); if (esbPacket.containsKey(TECHNICAL_REQUIREMENTS2)) technicalRequirements = esbPacket.getString(TECHNICAL_REQUIREMENTS2); if (esbPacket.containsKey(DISTRIBUTION)) distribution = esbPacket.getString(DISTRIBUTION); if (esbPacket.containsKey(DISTRIBUTION2)) distribution = esbPacket.getString(DISTRIBUTION2); if (esbPacket.containsKey(VERSION)) version = esbPacket.getString(VERSION); if (esbPacket.containsKey(VERSION2)) version = esbPacket.getString(VERSION2); if (esbPacket.containsKey(THUMBNAIL)) thumbnail = esbPacket.getString(THUMBNAIL); if (esbPacket.containsKey(THUMBNAIL2)) thumbnail = esbPacket.getString(THUMBNAIL2); if (esbPacket.containsKey(PART_OF)) partOf = esbPacket.getString(PART_OF); if (esbPacket.containsKey(PART_OF2)) partOf = esbPacket.getString(PART_OF2); if (esbPacket.containsKey(REQUIRES)) requires = esbPacket.getString(REQUIRES); if (esbPacket.containsKey(REQUIRES2)) requires = esbPacket.getString(REQUIRES2); if (esbPacket.containsKey(OWNER)) owner = esbPacket.getString(OWNER); if (esbPacket.containsKey(OWNER2)) owner = esbPacket.getString(OWNER2); if (esbPacket.containsKey(GROUPS)) groups = esbPacket.getString(GROUPS); if (esbPacket.containsKey(GROUPS2)) groups = esbPacket.getString(GROUPS2); if (esbPacket.containsKey(INTERACTIVITY)) interactivity = esbPacket.getString(INTERACTIVITY); if (esbPacket.containsKey(INTERACTIVITY2)) interactivity = esbPacket.getString(INTERACTIVITY2); if (esbPacket.containsKey(LEVEL)) level = esbPacket.getString(LEVEL); if (esbPacket.containsKey(LEVEL2)) level = esbPacket.getString(LEVEL2); if (esbPacket.containsKey(KEYWORDS)) keywords = esbPacket.getString(KEYWORDS); if (esbPacket.containsKey(KEYWORDS2)) keywords = esbPacket.getString(KEYWORDS2); if (esbPacket.containsKey(OBJECTIVES)) objectives = convertToObject(esbPacket.getArray(OBJECTIVES)); if (esbPacket.containsKey(OBJECTIVES2)) objectives = convertToObject(esbPacket.getArray(OBJECTIVES2)); if (esbPacket.containsKey(RATING)) rating = esbPacket.get(RATING).isString()!=null?Double.parseDouble(esbPacket.getString(RATING)):esbPacket.getDouble(RATING); if (esbPacket.containsKey(VOTES)) votes = esbPacket.get(VOTES).isString()!=null?Integer.parseInt(esbPacket.getString(VOTES)):esbPacket.getInteger(VOTES); if (esbPacket.containsKey(COMMENT_COUNT)) commentCount = esbPacket.get(COMMENT_COUNT).isString()!=null?Integer.parseInt(esbPacket.getString(COMMENT_COUNT)):esbPacket.getInteger(COMMENT_COUNT); if (esbPacket.containsKey(SKILL)) skill = esbPacket.getString(SKILL); if (esbPacket.containsKey(SKILL2)) skill = esbPacket.getString(SKILL2); if (esbPacket.containsKey(UPLOAD_DATE)) uploadDateStr = esbPacket.getString(UPLOAD_DATE); if (esbPacket.containsKey(UPDATED_DATE)) setUpdatedDateStr(esbPacket.getString(UPDATED_DATE)); if (esbPacket.containsKey(FOUO)) { if (esbPacket.get(FOUO).isBoolean()!=null) fouo = esbPacket.getBoolean(FOUO); else if (esbPacket.get(FOUO).isString()!=null) fouo = Boolean.parseBoolean(esbPacket.getString(FOUO)); } if (esbPacket.containsKey(FILESIZE_BYTES)) { if (esbPacket.get(FILESIZE_BYTES).isNumber()!=null) filesize = esbPacket.getInteger(FILESIZE_BYTES); else if (esbPacket.get(FILESIZE_BYTES).isString()!=null) filesize = Integer.valueOf(esbPacket.getString(FILESIZE_BYTES)); } if (esbPacket.containsKey(DURATION)) { if (esbPacket.get(DURATION).isNumber()!=null) duration = esbPacket.getDouble(DURATION); else if (esbPacket.get(DURATION).isString()!=null) duration = Double.valueOf(esbPacket.getString(DURATION)); } } public String getUploadDateStr() { return uploadDateStr; } public void setUploadDateStr(String dateStr) { uploadDateStr = dateStr; } /** *Levr stores the date as a long I believe; */ //TODO verify this public Date getUploadDate() { try { Date d = new Date(); d.setTime(Long.valueOf(getUploadDateStr())); return d; } catch (Exception e) { return null; } } public String getOwner() { return owner; } public void setOwner(String owner) { this.owner = owner; } public String getGroups() { return groups; } public void setGroups(String groups) { this.groups = groups; } public String getInteractivity() { return interactivity; } public void setInteractivity(String interactivity) { this.interactivity = interactivity; } public String getLevel() { return level; } public void setLevel(String level) { this.level = level; } public String getKeywords() { return keywords; } public void setKeywords(String keywords) { this.keywords = keywords; } public String getRequires() { return requires; } public void setRequires(String requires) { this.requires = requires; } public String getPartOf() { return partOf; } public void setPartOf(String partOf) { this.partOf = partOf; } public void setThumbnail(String thumbnail) { this.thumbnail = thumbnail; } public String getThumbnailURL() { return this.thumbnail; } public void setFOUO(Boolean fouo) { this.fouo = fouo; } public Boolean getFOUO() { return this.fouo; } public void setFilename(String filename) { this.filename = filename; } public String getFilename() { return this.filename; } public void setDescription(String description) { this.description = description; } public String getDescription() { return this.description; } public void setRating(double rating) { this.rating = rating; } public HashMap<String, CommentRecord> getComments() { return this.comments; } public void setMimeType(String mimeType) { this.mimeType = mimeType; } public String getMimeType() { return this.mimeType; } public void setCreateBy(String createBy) { this.createdBy = createBy; } public String getCreateBy() { return this.createdBy; } public int getCommentCount() { return commentCount; } public void setCommentCount(int commentCount) { this.commentCount = commentCount; } public int getView() { return view; } public void setView(int view) { this.view = view; } public int getDownloads() { return downloads; } public void setDownloads(int downloads) { this.downloads = downloads; } public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public int getVotes() { return votes; } public void setVotes(int votes) { this.votes = votes; } public double getRating() { return this.rating; } public String getPublisher() { return publisher; } public void setPublisher(String publisher) { this.publisher = publisher; } public String getClassification() { return classification; } public void setClassification(String classification) { this.classification = classification; } public String getActivity() { return activity; } public void setActivity(String activity) { this.activity = activity; } public String getEnvironment() { return environment; } public void setEnvironment(String environment) { this.environment = environment; } public String getCoverage() { return coverage; } public void setCoverage(String coverage) { this.coverage = coverage; } public String getLanguage() { return language; } public void setLanguage(String language) { this.language = language; } public double getDuration() { return duration; } public void setDuration(double duration) { this.duration = duration; } public String getTechnicalRequirements() { return technicalRequirements; } public void setTechnicalRequirements(String technicalRequirements) { this.technicalRequirements = technicalRequirements; } public String getDistribution() { return distribution; } public void setDistribution(String distribution) { this.distribution = distribution; } public String getVersion() { return version; } public void setVersion(String version) { this.version = version; } public int getFilesize() { return filesize; } public void setFilesize(int filesize) { this.filesize = filesize; } public void setComments(HashMap<String, CommentRecord> comments) { this.comments = comments; } public void addComments(CommentRecord commentRecord) { this.comments.put(commentRecord.getGuid(), commentRecord); } public void parseComments(ESBPacket esbPacket) { JSONArray commentsObject = esbPacket.getArray("obj"); if (commentsObject!=null) for (int i = 0; i < commentsObject.size(); i++) { CommentRecord cr = new CommentRecord(new ESBPacket(commentsObject.get(i).isObject())); this.comments.put(cr.getGuid(), cr); } } public JSONArray getObjectives() { return objectives; } public void setObjectives(JSONArray objectives) { this.objectives = objectives; } public String getSkill() { return skill; } public void setSkill(String skill) { this.skill = skill; } public String getFileContents() { return fileContents; } public void setFileContents(String fileContents) { this.fileContents = fileContents; } public String getUpdatedDateStr() { return updatedDateStr; } public void setUpdatedDateStr(String updatedDateStr) { this.updatedDateStr = updatedDateStr; } @Override public String toString() { return toObject().toString(); } public JSONArray convertToObject(JSONArray ja) { JSONArray acc = new JSONArray(); JSONObject jo; for (int i = 0; i < ja.size(); i++) { if (ja.get(i).isString()!=null) { String titleAndDescription = ja.get(i).isString().stringValue(); String title = titleAndDescription.substring(0, titleAndDescription.indexOf("<|>")); String description = titleAndDescription.substring(titleAndDescription.indexOf("<|>")+"<|>".length()); jo = new JSONObject(); jo.put("title", new JSONString(title)); jo.put("description", new JSONString(description)); } else jo = ja.get(i).isObject(); acc.set(i, jo); } return acc; } public JSONArray convertToReadable(JSONArray ja) { JSONArray acc = new JSONArray(); JSONString s; for (int i = 0; i < ja.size(); i++) { if (ja.get(i).isObject()!=null) { JSONObject jo = ja.get(i).isObject(); s = new JSONString(jo.get("title").isString().stringValue() + " <|> " + jo.get("description").isString().stringValue()); } else s = ja.get(i).isString(); acc.set(i, s); } return acc; } public ESBPacket toObject() { ESBPacket esbPacket = new ESBPacket(); esbPacket.put(FILENAME, filename); esbPacket.put(DESCRIPTION, description); esbPacket.put(MIMETYPE, mimeType); esbPacket.put(TITLE, title); esbPacket.put(CREATED_BY, createdBy); esbPacket.put(PUBLISHER, publisher); esbPacket.put(CLASSIFICATION, classification); esbPacket.put(ENVIRONMENT, environment); esbPacket.put(COVERAGE, coverage); esbPacket.put(LANGUAGE, language); esbPacket.put(TECHNICAL_REQUIREMENTS, technicalRequirements); esbPacket.put(DISTRIBUTION, distribution); esbPacket.put(VERSION, version); esbPacket.put(THUMBNAIL, thumbnail); esbPacket.put(PART_OF, partOf); esbPacket.put(REQUIRES, requires); esbPacket.put(OWNER, owner); esbPacket.put(GROUPS, groups); esbPacket.put(INTERACTIVITY, interactivity); esbPacket.put(LEVEL, level); esbPacket.put(KEYWORDS, keywords); esbPacket.put(OBJECTIVES, convertToReadable(objectives)); esbPacket.put(FILE_CONTENT, fileContents); esbPacket.put(FOUO, fouo); esbPacket.put(SKILL, skill); esbPacket.put(VIEW, view); esbPacket.put(DOWNLOADS, downloads); esbPacket.put(FILESIZE_BYTES,filesize); esbPacket.put(ID, getGuid()); esbPacket.put(DURATION, duration); esbPacket.put(UPLOAD_DATE, uploadDateStr); esbPacket.put(UPDATED_DATE, updatedDateStr); return esbPacket; } }