org.dashbuilder.dataset.service.DataSetDefVfsServicesImpl Maven / Gradle / Ivy
/**
* Copyright 2015 Red Hat, Inc. and/or its affiliates.
*
* 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 org.dashbuilder.dataset.service;
import java.util.ArrayList;
import java.util.List;
import javax.enterprise.context.ApplicationScoped;
import javax.inject.Inject;
import org.dashbuilder.dataset.ColumnType;
import org.dashbuilder.dataset.DataSetManagerCDI;
import org.dashbuilder.dataset.DataSetMetadata;
import org.dashbuilder.dataset.DataSetDefRegistryCDI;
import org.dashbuilder.dataset.backend.EditDataSetDef;
import org.dashbuilder.dataset.def.DataColumnDef;
import org.dashbuilder.dataset.def.DataSetDef;
import org.dashbuilder.exception.ExceptionManager;
import org.jboss.errai.bus.server.annotations.Service;
import org.jboss.errai.security.shared.api.identity.User;
import org.uberfire.backend.vfs.Path;
@ApplicationScoped
@Service
public class DataSetDefVfsServicesImpl implements DataSetDefVfsServices {
protected User identity;
protected DataSetDefRegistryCDI dataSetDefRegistry;
protected DataSetManagerCDI dataSetManager;
protected ExceptionManager exceptionManager;
public DataSetDefVfsServicesImpl() {
}
@Inject
public DataSetDefVfsServicesImpl(User identity,
DataSetDefRegistryCDI dataSetDefRegistry,
DataSetManagerCDI dataSetManager,
ExceptionManager exceptionManager) {
this.identity = identity;
this.dataSetDefRegistry = dataSetDefRegistry;
this.dataSetManager = dataSetManager;
this.exceptionManager = exceptionManager;
}
@Override
public Path resolve(DataSetDef dataSetDef) {
return dataSetDefRegistry.resolveVfsPath(dataSetDef);
}
@Override
public DataSetDef get(Path path) {
return dataSetDefRegistry.loadDataSetDef(path);
}
@Override
public EditDataSetDef load(Path path) {
try {
DataSetDef def = dataSetDefRegistry.loadDataSetDef(path);
if (def == null) {
return null;
}
// Clone the definition
DataSetDef cloned = def.clone();
// Enable all columns and set columns to null, force to obtain metadata with all original columns
// and all original column types.
boolean clonedAllColumns = cloned.isAllColumnsEnabled();
List clonedColumns = cloned.getColumns();
cloned.setAllColumnsEnabled(true);
cloned.setColumns(null);
// Obtain all original columns and all original column types.
DataSetMetadata _cd = dataSetManager.resolveProvider(cloned)
.getDataSetMetadata(cloned);
// Return the list of original columns and its types.
List columns = new ArrayList();
if (_cd.getNumberOfColumns() > 0) {
for (int x = 0; x < _cd.getNumberOfColumns(); x++) {
String cId = _cd.getColumnId(x);
ColumnType cType = _cd.getColumnType(x);
DataColumnDef cdef = new DataColumnDef(cId, cType);
columns.add(cdef);
}
}
// Set columns attributes as initially were.
cloned.setAllColumnsEnabled(clonedAllColumns);
cloned.setColumns(clonedColumns);
return new EditDataSetDef(cloned, columns);
} catch (Exception e) {
throw exceptionManager.handleException(e);
}
}
@Override
public Path save(DataSetDef definition, String commitMessage) {
dataSetDefRegistry.registerDataSetDef(definition,
identity != null ? identity.getIdentifier() : "system",
commitMessage);
return dataSetDefRegistry.resolveVfsPath(definition);
}
@Override
public Path copy(Path path, String newName, String commitMessage) {
DataSetDef def = dataSetDefRegistry.loadDataSetDef(path);
if (def == null) {
throw exceptionManager.handleException(
new Exception("Data set definition not found: " + path.getFileName()));
}
DataSetDef clone = dataSetDefRegistry.copyDataSetDef(def, newName,
identity != null ? identity.getIdentifier() : "system",
commitMessage);
return dataSetDefRegistry.resolveVfsPath(clone);
}
@Override
public void delete(Path path, String commitMessage) {
dataSetDefRegistry.removeDataSetDef(path,
identity != null ? identity.getIdentifier() : "system",
commitMessage);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy