MODEL

//yuec2 Yue Cheng
package hw2; import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Scanner; import javafx.beans.property.StringProperty;
import javafx.collections.FXCollections;
import javafx.collections.ObservableMap; public class Model extends DataFiler{
ObservableMap<StringProperty, Product> productsMap = FXCollections.observableHashMap();
static ObservableMap<StringProperty, Nutrient> nutrientsMap = FXCollections.observableHashMap();
Product[] products;
Nutrient[] nutrients; public void readProducts(String productFile) {
// TODO Auto-generated method stub
//initialize two Scanner
//Scanner fileScanner is used to count the number of lines in file
Scanner fileScanner = null;
//Scanner sc is used to read information into the products array
Scanner sc = null;
//fileContent is used to store all the information for this array
StringBuilder fileContent = new StringBuilder(); try {
File file = new File(productFile);
fileScanner = new Scanner(file);
sc = new Scanner(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
int countOfLines = 0; //skip the title line
fileScanner.nextLine();
while (fileScanner.hasNextLine()) {
//add all the information into the fileContent
fileContent.append(fileScanner.nextLine());
//get countOfLines by using fileScanner
countOfLines++; }
//initialize a Product array using the countOfLines as size
products = new Product[countOfLines]; //skip the title line
sc.nextLine();
for (int i = 0; i < countOfLines; i++) {
//put every line's product information into a String array temp
String[] temp = sc.nextLine().toString().split("\",\"");
//get information from the temp array and assign as each product's information
products[i] = new Product();
//StringProperty is not a string?
products[i].ndbNumber.set(temp[0]+'"');
products[i].productName.set(temp[1].trim());
products[i].ingredients.set(temp[7].trim());
products[i].manufacturer.set(temp[4].trim());
productsMap.put(products[i].ndbNumber, products[i]);
}
} public void readNutrients(String nutrientFile) {
//initialize 2 Scanner
//Scanner fileScanner is used to count the number of lines in file
Scanner fileScanner = null;
//Scanner sc is used to read information into the nutrients array
Scanner sc = null;
//StringBuilder contentOfUniqueNutrients is used to store information of the unique nutrients
StringBuilder contentOfUniqueNutrients = new StringBuilder();
//fileContent is used to store all the information for this array
StringBuilder fileContent = new StringBuilder(); try {
File file = new File(nutrientFile);
fileScanner = new Scanner(file);
sc = new Scanner(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
//skip the title line
fileScanner.nextLine();
//initialize the count numbers
int countOfLines = 0;
int numOfUniqueNutirents = 0; while (fileScanner.hasNextLine()) {
//get one line's information into the String cur
String cur = fileScanner.nextLine();
//extract the nutrients's id to identify each unique nutrient
String id = cur.split("\",\"")[1];
//add all the information into the fileContent
fileContent.append(cur);
//get countOfLines by using fileScanner
countOfLines++; if (!contentOfUniqueNutrients.toString().contains(id)) {
//if the id is unique, append this nutrient's information
contentOfUniqueNutrients.append(cur);
//split each line by \n
contentOfUniqueNutrients.append("\n");
//count the number for unique nutrients
numOfUniqueNutirents++;
}
} //skip the title line
sc.nextLine();
//initialize an array using the numOfUniqueNutirents as size
nutrients = new Nutrient[numOfUniqueNutirents];
//store each line's information into a string array
String[] lines = contentOfUniqueNutrients.toString().split("\n", -1);
for (int i = 0; i < numOfUniqueNutirents; i++) {
//split each array's elements
String[] temp1 = lines[i].toString().split("\",", -1);
//assign each element's information
nutrients[i] = new Nutrient();
nutrients[i].nutrientCode.set(temp1[1].replaceAll("\"", "").trim());
nutrients[i].nutrientName.set(temp1[2].replaceAll("\"", "").trim());
nutrients[i].nutrientUom.set(temp1[5].replaceAll("\"", "").trim());
nutrientsMap.put(nutrients[i].nutrientCode, nutrients[i]);
}
} public void readServingSizes(String servingSizeFile) {
//initialize two Scanner
//Scanner fileScanner is used to count the number of lines in file
Scanner fileScanner = null;
//Scanner sc is used to read information into the products array
Scanner sc = null;
//add all the information into the fileContent
StringBuilder fileContent = new StringBuilder(); try {
File file = new File(servingSizeFile);
fileScanner = new Scanner(file);
sc = new Scanner(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
} int countOfLines = 0;
//get countOfLines
fileScanner.nextLine();
while (fileScanner.hasNextLine()) {
fileContent.append(fileScanner.nextLine());
countOfLines++;
} //count the number of words of each line of serving size file
int lengthOfServingSizeFile = sc.nextLine().toString().split("\",\"").length;
//initialize an array using the lengthOfServingSizeFile as size
String[] temp = new String[lengthOfServingSizeFile]; for (int i = 0; i < countOfLines; i++) {
//split each array's elements
temp = sc.nextLine().toString().split("\",\"");
//assign each element's information
products[i] = new Product();
products[i].servingSize.set(Float.parseFloat(temp[1].trim()));
products[i].servingUom.set(temp[2].trim());
products[i].householdSize.set(Float.parseFloat(temp[3].trim()));
products[i].householdUom.set(temp[4].trim());
productsMap.put(products[i].ndbNumber, products[i]);
}
} @Override
public void writeFile(String filename) {
// TODO Auto-generated method stub } @Override
public boolean readFile(String filename) {
// TODO Auto-generated method stub
//how to judge the file?
CSVFiler cf = new CSVFiler();
XMLFiler xf = new XMLFiler();
if (filename.contains("csv")) cf.readFile(filename);
if (filename.contains("xml")) xf.readFile(filename);
return false;
} }

CSVFiler

package hw2;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner; public class CSVFiler extends DataFiler{ @Override
public void writeFile(String filename) {
// TODO Auto-generated method stub
//no code in this version
} @Override
public boolean readFile(String filename) {
// TODO Auto-generated method stub
Scanner sc = null;
//add all the information into the fileContent
StringBuilder fileContent = new StringBuilder(); try {
File file = new File("Profile1.csv");
sc = new Scanner(file);
} catch (FileNotFoundException e) {
e.printStackTrace();
}
fileContent.append(sc.nextLine()); String[] temp = fileContent.toString().split("\",\"");
//Female(float age, float weight, float height, float physicalActivityLevel, String ingredientsToAvoid) {
Female female = new Female(Float.valueOf(temp[1]), Float.valueOf(temp[2]),
Float.valueOf(temp[3]), Float.valueOf(temp[4]),temp[5]);
Person p = female;
//how to judge correct or not? return false;
} }

最后一段改的CSVFiler

public
boolean readFile(String filename) {
CSVFormat csvFormat = CSVFormat.DEFAULT.withFirstRecordAsHeader(); try {
CSVParser csvParser = CSVParser.parse(new FileReader(filename), csvFormat); for (CSVRecord csvRecord : csvParser) {
Person person = new Person(csvRecord.get(1), csvRecord.get(2), csvRecord.get(3), csvRecord.get(4), csvRecord.get(5));
} }
catch (FileNotFoundException e1) { e1.printStackTrace(); return false;}
catch (IOException e1) { e1.printStackTrace(); return false;} return true;}

JAVA HW2的更多相关文章

  1. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  2. java返回一个简单的日历

    import java.text.*; //首先得导包 import java.util.*; public class hw2 { /** * 计算日期差 返回的天数 * @param dstr1 ...

  3. Java Gradle入门指南之简介、安装与任务管理

        这是一篇Java Gradle入门级的随笔,主要介绍Gradle的安装与基本语法,这些内容是理解和创建build.gradle的基础,关于Gradle各种插件的使用将会在其他随笔中介绍.    ...

  4. JAVA基础知识之网络编程——-TCP/IP协议,socket通信,服务器客户端通信demo

    OSI模型分层 OSI模型是指国际标准化组织(ISO)提出的开放系统互连参考模型(Open System Interconnection Reference Model,OSI/RM),它将网络分为七 ...

  5. java的nio之:java的nio的服务器实现模型

    [nio服务端序列图]

  6. Java相关错误

    http://blog.csdn.net/pipisorry/article/details/51291063 使用hadoop jar ./Hw2Part1.jar /hw2/example-inp ...

  7. java 中什么是aop

    AOP AOP(Aspect Oriented Programming),即面向切面编程,可以说是OOP(Object Oriented Programming,面向对象编程)的补充和完善.OOP引入 ...

  8. 【转】Java Spring AOP详解

    一.前言 在以前的项目中,很少去关注spring aop的具体实现与理论,只是简单了解了一下什么是aop具体怎么用,看到了一篇博文写得还不错,就转载来学习一下,博文地址:http://www.cnbl ...

  9. JAVA总结--Spring框架全解

    一.Spring简介 Spring 是个java企业级应用的开源开发框架.Spring主要用来开发Java应用,但是有些扩展是针对构建J2EE平台的web应用.Spring 框架目标是简化Java企业 ...

随机推荐

  1. python 小整数池 和intern 【整理】

    小整数对象池 (在python内置了) 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池,避免为整数频繁申请和销毁内存空间. Python对小整数的定义是[-5,257]这些整 ...

  2. JAVAWEB 一一 Spirng(AOP面向切面)

    applicationContext.xml <?xml version="1.0" encoding="UTF-8"?> <!-- < ...

  3. C# 13位时间戳转换成标准时间C#代码

    原地址:https://www.cnblogs.com/yixuehan/p/5559244.html /// <summary> /// 时间戳转换成标准时间 /// </summ ...

  4. 处女座和小姐姐(三)-数位dp1.0

    链接:https://ac.nowcoder.com/acm/contest/329/G来源:牛客网 题目描述 经过了选号和漫长的等待,处女座终于拿到了给小姐姐定制的手环,小姐姐看到以后直呼666! ...

  5. BOS物流项目第十二天

    教学计划 1.角色管理 a.  添加角色功能 b.  角色分页查询 2.用户管理 a.  添加用户功能 b.  用户分页查询 3.修改Realm中授权方法(查询数据库) 4.使用ehcache缓存权限 ...

  6. jenkins 添加节点问题

    没有 Launch agent via Java Web Start 选项 Manage Jenkins > Configure Global Security > TCP port fo ...

  7. sass 使用clac的问题

    最后在github的issue中找到了方法,要想在sass的calc中使用变量,必须对这个变量使用sass的插值方法(#{$variable}). 所以把代码改正下面的形式就可以了: width: c ...

  8. ubuntu 解决“无法获得锁 /var/lib/dpkg/lock -open (11:资源暂时不可用)”的方法

    原文链接:https://www.cnblogs.com/kaid/p/8616385.html 在ubuntu系统的termial下,用apt-get install 安装软件的时候,如果在未完成下 ...

  9. selenium自动化测试之整合测试报告

    selenium自动化测试之整合测试报告 标签(空格分隔): 整合报告 如下截图我们添加一个文件叫做:latest_report.py文件, import time import os import ...

  10. Linq to sql 之 ExecuteQuery 错误:指定的转换无效

    问题:通过dbContext.ExecuteQuery 得到数据并赋值给一个集合. 代码: public IEnumerable<LeaveCodeSum> GetLeavTotal(st ...