package view;
import java.io.File;
import java.io.FileInputStream;
import java.io.ObjectInputStream;
import dao.Dao;
import hash_name.Hash_name;
import hash_name.LinkedName;
import hash_number.Hash_number;
import hash_number.LinkedHash;
import javafx.collections.ObservableList;
import javafx.fxml.FXML;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.Menu;
import javafx.scene.control.RadioButton;
import javafx.scene.control.TextField;
import javafx.scene.control.ToggleGroup;
import javafx.scene.control.Alert.AlertType;
import javafx.stage.FileChooser;
import main.Main;
public class menu_control {
private Main main;
@FXML
private ToggleGroup myToggleGroup;
@FXML
private RadioButton RadioButton_A;
@FXML
private RadioButton RadioButton_B;
@FXML
private TextField Search;
@FXML
private Button Search_button;
@FXML
private Menu choose_mode;
private static boolean mode = true;
public static String file_path = "F:/IDE/hash_table/data/hash_name1.dat";
//public static String backUp = "BackUp/"+file_path.hashCode()+".dat";
public void setMain(Main main) {
this.main = main;
}
@FXML
private void initialize() {
mode = true;
}
@FXML
private void handleRadioA(){
if(mode){
if(PersonOverviewController.getHash_name()==null){
Dao[] all = null;
Hash_name hash_name = new Hash_name();
if(PersonOverviewController.getHash_number()!=null){
Hash_number hash_number =PersonOverviewController.getHash_number();
all = hash_number.hash_getAll();
PersonOverviewController.setHash_number(null);
}
else if(PersonOverviewController.getlinked_hash()!=null){
LinkedHash linkedHash = PersonOverviewController.getlinked_hash();
all = linkedHash.get_all();
PersonOverviewController.setLinkedHash(null);
}
else if(PersonOverviewController.getlinked_name()!=null){
LinkedName linkedName = PersonOverviewController.getlinked_name();
all = linkedName.get_all();
PersonOverviewController.setLinkedName(null);
}
for(int i=0;i<all.length;i++){
hash_name.add(all[i]);
}
PersonOverviewController.setHash_name(hash_name);
PersonOverviewController.update_personData();
}
}
else {
if(PersonOverviewController.getlinked_name()==null){
Dao[] all = null;
LinkedName linkedName = new LinkedName();
if(PersonOverviewController.getHash_number()!=null){
Hash_number hash_number =PersonOverviewController.getHash_number();
all = hash_number.hash_getAll();
PersonOverviewController.setHash_number(null);
}
else if(PersonOverviewController.getlinked_hash()!=null){
LinkedHash linkedHash = PersonOverviewController.getlinked_hash();
all = linkedHash.get_all();
PersonOverviewController.setLinkedHash(null);
}
else if(PersonOverviewController.getHash_name()!=null){
Hash_name hash_name = PersonOverviewController.getHash_name();
all = hash_name.get_all();
PersonOverviewController.setHash_name(null);
}
for(int i=0;i<all.length;i++){
linkedName.add(all[i]);
}
PersonOverviewController.setLinkedName(linkedName);
PersonOverviewController.update_personData();
}
}
}
@FXML
private void handleRadioB(){
if(mode){
if(PersonOverviewController.getHash_number()==null){
Dao[] all = null;
Hash_number hash_number = new Hash_number();
if(PersonOverviewController.getHash_name()!=null){
Hash_name hash_name = PersonOverviewController.getHash_name();
all = hash_name.get_all();
PersonOverviewController.setHash_name(null);
}
else if(PersonOverviewController.getlinked_hash()!=null){
LinkedHash linkedHash = PersonOverviewController.getlinked_hash();
all = linkedHash.get_all();
PersonOverviewController.setLinkedHash(null);
}
else if(PersonOverviewController.getlinked_name()!=null){
LinkedName linkedName = PersonOverviewController.getlinked_name();
all = linkedName.get_all();
PersonOverviewController.setLinkedName(null);
}
for(int i=0;i<all.length;i++){
hash_number.add(all[i]);
}
PersonOverviewController.setHash_number(hash_number);
PersonOverviewController.update_personData();
}
}
else {
if(PersonOverviewController.getlinked_hash()!=null){
Dao[] all = null;
LinkedHash linkedHash =new LinkedHash();
if(PersonOverviewController.getHash_name()!=null){
Hash_name hash_name = PersonOverviewController.getHash_name();
all = hash_name.get_all();
PersonOverviewController.setHash_name(null);
}
else if(PersonOverviewController.getHash_number()!=null){
Hash_number hash_number = PersonOverviewController.getHash_number();
all = hash_number.hash_getAll();
PersonOverviewController.setHash_number(null);
}
else if(PersonOverviewController.getlinked_name()!=null){
LinkedName linkedName = PersonOverviewController.getlinked_name();
all = linkedName.get_all();
PersonOverviewController.setLinkedName(null);
}
for(int i=0;i<all.length;i++){
linkedHash.add(all[i]);
}
PersonOverviewController.setLinkedHash(linkedHash);
PersonOverviewController.update_personData();
}
}
}
@FXML
public void handleMode1(){
//System.out.println("mode1"); 数组实现
choose_mode.setText("Mode1");
mode = true;
}
@FXML
public void handleMode2(){
//System.out.println("mode2"); 链表实现
choose_mode.setText("Mode2");
mode = false;
}
public boolean get_mode(){
return mode;
}
@FXML
private void handleOpen() {
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle("select a data file");
FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("data files (*.dat)", "*.dat");
fileChooser.getExtensionFilters().add(extFilter);
File file =fileChooser.showOpenDialog(main.getPrimaryStage());
System.out.println(file);
if (file != null) {
ObservableList<Dao> personData = PersonOverviewController.getObservableList();
personData.clear();
PersonOverviewController.SetAllEmpty();
String path = file+"";
file_path = path;
try {
// file input stream
FileInputStream fis = new FileInputStream ( file_path);
// object input stream
ObjectInputStream ois = new ObjectInputStream ( fis );
// read bookList
Object object = ois.readObject();
//备份对象的读取
String backUp = "BackUp/"+file_path.hashCode()+".dat";
FileInputStream fis2 = new FileInputStream(backUp);
ObjectInputStream ois2 = new ObjectInputStream(fis2);
Object object2 = ois2.readObject();
if(object instanceof Hash_name){
Hash_name hash_name = (Hash_name) object;
Hash_name hash_name2 = (Hash_name)object2;
System.out.println(hash_name.equals(hash_name2));
if(!(hash_name.equals(hash_name2))){
hash_name = hash_name2;
}
PersonOverviewController.setHash_name(hash_name);
Dao[] all = hash_name.get_all();
for(int i=0;i<all.length;i++){
personData.add(all[i]);
}
}
else if(object instanceof Hash_number) {
Hash_number hash_number = (Hash_number) object;
Hash_number hash_number2 = (Hash_number) object2;
System.out.println(hash_number.equals(hash_number2));
if(!(hash_number.equals(hash_number2))){
hash_number = hash_number2;
}
PersonOverviewController.setHash_number(hash_number);
Dao[] all = hash_number.hash_getAll();