/**
* Copyright [2015] [Christian Loehnert]
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package de.ks.idnadrev.cost.csvimport;
import com.google.common.base.StandardSystemProperty;
import de.ks.BaseController;
import de.ks.i18n.Localized;
import de.ks.idnadrev.cost.bookingview.BookingViewTableController;
import de.ks.idnadrev.entity.cost.Booking;
import javafx.fxml.FXML;
import javafx.scene.control.*;
import javafx.stage.FileChooser;
import java.io.File;
import java.net.URL;
import java.util.List;
import java.util.ResourceBundle;
import java.util.stream.Collectors;
public class BookingFromCSVController extends BaseController<ImporterBookingViewModel> {
@FXML
protected Accordion accordion;
@FXML
protected TitledPane lineTab;
@FXML
protected TitledPane errorTab;
@FXML
protected TextArea errorField;
@FXML
protected Button importer;
@FXML
protected Button selectFile;
@FXML
protected CSVParseDefinitionController parseDefinitionController;
@FXML
protected BookingViewTableController bookingTableController;
@Override
public void initialize(URL location, ResourceBundle resources) {
controller.getJavaFXExecutor().submit(() -> accordion.setExpandedPane(lineTab));
TableColumn<Booking, Boolean> markedColumn = bookingTableController.getMarkedColumn();
markedColumn.setText(Localized.get("import"));
}
@Override
protected void onRefresh(ImporterBookingViewModel model) {
errorField.setText(model.getErrors());
}
@Override
public void duringSave(ImporterBookingViewModel model) {
List<Booking> bookingsToImport = bookingTableController.getMarked().entrySet().stream().filter(b -> b.getValue().get()).map(e -> e.getKey()).collect(Collectors.toList());
model.setBookingsToImport(bookingsToImport);
}
public void onSelectFile(File file) {
store.getDatasource().setLoadingHint(file);
controller.reload();
}
@FXML
public void onSelectFile() {
FileChooser fileChooser = new FileChooser();
fileChooser.setTitle(Localized.get("import.select.csv.file"));
String homeDir = StandardSystemProperty.USER_HOME.value();
fileChooser.setInitialDirectory(new File(homeDir));
FileChooser.ExtensionFilter extensionFilter = new FileChooser.ExtensionFilter("*.csv", "*.csv");
fileChooser.getExtensionFilters().add(extensionFilter);
fileChooser.setSelectedExtensionFilter(extensionFilter);
File file = fileChooser.showOpenDialog(selectFile.getScene().getWindow());
if (file != null && file.exists()) {
onSelectFile(file);
}
}
@FXML
public void onImport() {
controller.save();
controller.reload();
}
}