/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
* Copyright 2008, 2010 Oracle and/or its affiliates. All rights reserved.
* Use is subject to license terms.
*
* This file is available and licensed under the following license:
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* * Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* * Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* * Neither the name of Oracle Corporation nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package projectmanager;
import projectmanager.ProjectModel;
import projectmanager.TaskModel;
public var projectCategories: ProjectModel[];
public var projectTasks: TaskModel[];
public class DataHandler {
var taskKeyGenerator: Integer = 100;
var projKeyGenerator: Integer = 100;
public var updateProjectView: Boolean = false;
public var updateTaskView: Boolean = false;
init {
addProjectCategories(
[
ProjectModel {
name: "Test Dev for Marina"
description: "QA Tasks"
key: 0
},
ProjectModel {
name: "QA Tasks"
description: "QA Tasks"
key: 1
},
ProjectModel {
name: "Functional Specs"
description: "Specification need to complete"
key: 2
},
ProjectModel {
name: "Marina PRD Updates"
description: "Requirements specifications"
key: 3
},
ProjectModel {
name: "FX UI Controls Dev"
description: "QA Tasks"
key: 4
},
]
);
addProjectTasks(
[
TaskModel {
category: "QA Tasks"
name: "SoMa Test Execution"
priority: 3
notes: "Testing need to complete by next week"
key: 0
},
TaskModel {
category: "Functiona Specs"
name: "SoMa Functional Specs dev"
priority: 3
notes: "Testing need to complete by next week"
key: 1
},
TaskModel {
category: "FX UI Controls Dev"
name: "Reliabilty Testing"
priority: 2
notes: "Testing need to complete by next week"
key: 2
},
TaskModel {
category: "FX UI Controls Dev"
name: "Function Testing"
priority: 1
notes: "Testing need to complete by next week"
key: 3
},
TaskModel {
category: "QA Tasks"
name: "PIT Testing"
priority: 1
notes: "Testing need to complete by next week"
key: 4
},
TaskModel {
category: "QA Tasks"
name: "Promotion Testing"
priority: 1
notes: "Testing need to complete by next week"
key: 5
},
]
);
populateData();
}
public function getProjectCategory(): ProjectModel[] {
return projectCategories;
}
function getTaskKey(): Integer {
return taskKeyGenerator ++;
}
function getProjectKey(): Integer {
return projKeyGenerator ++;
}
public function addProjectTask(pt: TaskModel):Void {
updateTaskView = false;
var i: Integer = 0; var pos: Integer = 0;
var key = getTaskKey();
pt.key = key;
if(projectTasks.size() > 0) {
for(projTask in projectTasks){
if (projTask.name == null or projTask.name == "") {
pos = i;
break;
}
if(pt.name.compareTo(projTask.name) > 0 ) {
i++;
continue;
} else if(pt.name.compareTo(projTask.name) <= 0) {
pos = i;
break;
}
}
if(i == 0 ){
insert pt before projectTasks[0];
} else if( pos == 0 ){
insert pt into projectTasks;
} else {
insert pt before projectTasks[pos];
}
} else {
insert pt into projectTasks;
}
updateTaskView = true;
}
public function addProjectTasks(tasks: TaskModel[]):Void {
for (task in tasks) {
addProjectTask(task);
}
}
function populateData() {
for (x in [1..AppView.screenHeight/21]) {
insert TaskModel { key: getTaskKey()} into projectTasks;
insert ProjectModel { key: getProjectKey()} into projectCategories;
}
}
public function addProjectCategory(pc: ProjectModel): Void {
updateProjectView = false;
var i: Integer = 0; var pos: Integer = 0;
var key = getProjectKey();
pc.key = key;
if( projectCategories.size() > 0 ) {
for( projCate in projectCategories ){
if (projCate.name == null or projCate.name == "") {
pos = i;
break;
}
if( pc.name.compareTo(projCate.name) > 0 ) {
i++;
continue;
} else if(pc.name.compareTo(projCate.name) <= 0) {
pos = i;
break;
}
}
if(i == 0 ){
insert pc before projectCategories[0];
} else if( pos == 0 ){
insert pc into projectCategories;
} else {
insert pc before projectCategories[pos];
}
} else {
insert pc into projectCategories;
}
updateProjectView = true;
}
public function addProjectCategories(cats: ProjectModel[]):Void {
for (cat in cats) {
addProjectCategory(cat);
}
}
public function updateProjectCategory(pCat: ProjectModel){
for(projCat in projectCategories) {
if(projCat.key == pCat.key) {
delete projCat from projectCategories;
break;
}
}
addProjectCategory(pCat);
}
public function updateProjectTask(pTask: TaskModel){
for(projTas in projectTasks) {
if(projTas.key == pTask.key) {
delete projTas from projectTasks;
break;
}
}
addProjectTask(pTask);
}
public function getProjectTasks(): TaskModel[] {
return projectTasks;
}
public function getProjectTasks(pr: Integer): TaskModel[] {
var projTsks: TaskModel[];
for(proj in projectTasks){
if( proj.priority == pr or proj.name == null) {
insert proj into projTsks;
}
}
return projTsks;
}
public function getProjectTask(projName: String): TaskModel {
for(proj in projectTasks){
if( proj.name == projName) {
return proj;
}
}
return null;
}
public function getProjectTask(key: Integer): TaskModel {
for (proj in projectTasks) {
if (proj.key == key) {
return proj;
}
}
return null;
}
public function getProjectCategoriesNames(): String[] {
var prCatNames: String[];
for(projCat in projectCategories) {
insert projCat.name into prCatNames;
}
return prCatNames;
}
public function getProjectCategory(catName: String): ProjectModel {
for(projCat in projectCategories) {
if( projCat.name == catName )
return projCat;
}
return null;
}
public function getProjectCategory(key: Integer): ProjectModel {
for(projCat in projectCategories) {
if( projCat.key == key )
return projCat;
}
return null;
}
public function getProjectTasksNames(): String[] {
var prTNames: String[];
for(projTask in projectTasks) {
insert projTask.name into prTNames;
}
return prTNames;
}
public function getProjectTasksNames(projCat: String): String[] {
var prTNames: String[];
for(projTask in projectTasks) {
if (projTask.category == projCat) {
insert projTask.name into prTNames;
}
}
return prTNames;
}
public function getProjectTasksNames(pr: Integer, projCat: String): String[] {
var prTNames: String[];
for(projTask in projectTasks) {
if (projTask.category == projCat) {
if( projTask.priority == pr or projTask.name == null ) {
insert projTask.name into prTNames;
}
}
}
return prTNames;
}
public function getProjectTasksNames(pr: Integer): String[] {
var prTNames: String[];
for(projTask in projectTasks) {
if( projTask.priority == pr ){
insert projTask.name into prTNames;
}
}
return prTNames;
}
public function deleteProjectCategory(pc: ProjectModel): Boolean {
deleteProjectCategory(pc.key);
}
public function deleteProjectCategory(key: Integer) {
updateProjectView = false;
if(projectCategories.size() > 0){
for( pcat in projectCategories) {
if(pcat.key == key) {
for (task in projectTasks) {
if (task.category == pcat.name) {
return false;
}
}
delete pcat from projectCategories;
updateProjectView = true;
return true;
}
}
}
return false;
}
public function deleteProjectCategory(catName: String) {
updateProjectView = false;
if(projectCategories.size() > 0){
for( pcat in projectCategories) {
if(pcat.name == catName) {
for (task in projectTasks) {
if (task.category == pcat.name) {
return false;
}
}
delete pcat from projectCategories;
updateProjectView = true;
return true;
}
}
}
return false;
}
public function deleteProjectTask(pt: TaskModel): Void {
updateTaskView = false;
if(projectTasks.size() > 0){
for( pTask in projectTasks) {
if(pTask.key == pt.key) {
delete pTask from projectTasks;
updateTaskView = true;
break;
}
}
}
}
public function deleteProjectTask(ptName: String): Void {
updateTaskView = false;
if(projectTasks.size() > 0){
for( pTask in projectTasks) {
if(pTask.name == ptName) {
delete pTask from projectTasks;
updateTaskView = true;
break;
}
}
}
}
}