private void split(Node node){
		Node nodeL=new Node(ORDER);
		Node nodeR=new Node(ORDER);
		MyRecord keyUp=node.getKeys().get(HALF_KEY);
		
		//already full and one more entered to be split
			for(int i=0;i<HALF_KEY;i++){
				nodeL.getKeys().add(node.getKeys().get(i));
			}
			for(int i=HALF_KEY+1;i<ORDER;i++){
				nodeR.getKeys().add(node.getKeys().get(i));
			}
			if(!node.isLeaf()){//if not leaf, have to re allocate children. There should be one more child than ORDER
				for(int i=0;i<=HALF_KEY;i++){
					nodeL.getChildren().add(node.getChildren().get(i));
				}
				for(int i=HALF_KEY+1;i<=ORDER;i++){
					nodeR.getChildren().add(node.getChildren().get(i));
				}
			}
			if(node.getParent()==null){//create new parent, also the new root of the btree
				nodeL.setParent(node);
				nodeR.setParent(node);
				node.getKeys().clear();
				node.getKeys().add(keyUp);
				node.getChildren().clear();
				node.getChildren().add(nodeL);
				node.getChildren().add(nodeR);
				this.root=node;
			}
			else{//add to current parent. Might cause parent having too many (one more) keys and children
				nodeL.setParent(node.getParent());
				nodeR.setParent(node.getParent());
				node.getParent().getKeys().add(keyUp);//keyUp
				DataHandler.sortMyRecord(node.getKeys());//sort current keys (might be one more than KEY_MAX)
				node.getParent().getChildren().set(node.getParent().getKeys().indexOf(keyUp), nodeL);//node's position is the new Left Node's place.
				node.getParent().getChildren().add(node.getParent().getKeys().indexOf(keyUp)+1,nodeR);//add one more position for new right node.
				if(node.getParent().getKeys().size()==(MAX_KEY+1)){//If parent is full, split it.
					split(node.getParent());
				}
			}
			
	}