/*=============================================================================# # Copyright (c) 2013-2016 Stephan Wahlbrink (WalWare.de) and others. # All rights reserved. This program and the accompanying materials # are made available under the terms of the Eclipse Public License v1.0 # which accompanies this distribution, and is available at # http://www.eclipse.org/legal/epl-v10.html # # Contributors: # Stephan Wahlbrink - initial API and implementation #=============================================================================*/ package de.walware.rj.services.utils.dataaccess; import de.walware.rj.data.RDataFrame; import de.walware.rj.data.RDataUtil; import de.walware.rj.data.RObject; import de.walware.rj.data.UnexpectedRDataException; import de.walware.rj.services.utils.dataaccess.LazyRStore.Fragment; /** * Data adapter for {@link RDataFrame} objects. * * @since 2.0 (provisional) */ public class RDataFrameDataAdapter extends AbstractRDataAdapter<RDataFrame, RDataFrame> { @Override public RDataFrame validate(final RObject rObject) throws UnexpectedRDataException { return RDataUtil.checkRDataFrame(rObject); } @Override public RDataFrame validate(final RObject rObject, final RDataFrame referenceObject, final int flags) throws UnexpectedRDataException { final RDataFrame dataframe = RDataUtil.checkRDataFrame(rObject, referenceObject.getColumnCount()); if ((flags & ROW_COUNT) != 0) { RDataUtil.checkRowCountEqual(dataframe, referenceObject.getRowCount()); } if ((flags & STORE_TYPE) != 0) { for (int i = 0; i < dataframe.getColumnCount(); i++) { RDataUtil.checkData(dataframe.getColumn(i), referenceObject.getColumn(i).getStoreType()); } } return dataframe; } @Override public long getRowCount(final RDataFrame rObject) { return rObject.getRowCount(); } @Override public long getColumnCount(final RDataFrame rObject) { return rObject.getColumnCount(); } @Override protected String getLoadDataFName() { return "rj:::.getDataFrameValues"; //$NON-NLS-1$ } @Override protected String getSetDataFName() { return "rj:::.setDataFrameValues"; //$NON-NLS-1$ } @Override protected RDataFrame validateData(final RObject rObject, final RDataFrame referenceObject, final Fragment<RDataFrame> fragment) throws UnexpectedRDataException { final RDataFrame dataframe = RDataUtil.checkRDataFrame(rObject, fragment.getColumnCount()); RDataUtil.checkRowCountEqual(dataframe, fragment.getRowCount()); for (int i = 0; i < fragment.getColumnCount(); i++) { RDataUtil.checkData(dataframe.getColumn(i), referenceObject.getColumn(fragment.getColumnBeginIdx() + i).getStoreType() ); } return dataframe; } @Override protected String getLoadRowNamesFName() { return "rj:::.getDataFrameRowNames"; //$NON-NLS-1$ } }