DataSource.h
1 //##################################################################################################
2 //
3 // Ceetron Desktop Components
4 // Component: UnstructGrid
5 //
6 // --------------------------------------------------------------------------------------------
7 // Copyright (C) 2011, Ceetron AS
8 // This is UNPUBLISHED PROPRIETARY SOURCE CODE of Ceetron AS. The contents of this file may
9 // not be disclosed to third parties, copied or duplicated in any form, in whole or in part,
10 // without the prior written permission of Ceetron AS.
11 //##################################################################################################
12 
13 #pragma once
14 
15 #include "CeeUnstructGrid/Base.h"
16 #include "CeeUnstructGrid/DataState.h"
17 #include "CeeUnstructGrid/DataStateSpec.h"
18 #include "CeeUnstructGrid/DataSourceDirectory.h"
19 
20 #include "CeeCore/Str.h"
21 
22 class VTDatabase;
23 
24 namespace cee {
25 namespace ug {
26 
27 class UnstructGridModel;
28 class DataElementSet;
29 
30 //==================================================================================================
31 //
32 //
33 //
34 //==================================================================================================
35 class CEE_UG_EXPORT DataSource : public RefCountedObject
36 {
37 public:
38  virtual ~DataSource();
39 
40  int id() const;
41  size_t stateCount() const;
42  size_t stateIndex(int stateId) const;
43  size_t geometryCountPerState() const;
44 
45  const DataState* state(size_t stateIndex) const;
46  DataState* state(size_t stateIndex);
47  const DataState* currentState(const UnstructGridModel* model) const;
48  DataState* currentState(const UnstructGridModel* model);
49 
50  const DataSourceDirectory* directory() const;
51  DataSourceDirectory* directory();
52 
53  const DataElementSet* elementSet(size_t setIndex) const;
54  DataElementSet* elementSet(size_t setIndex);
55  size_t elementSetCount() const;
56  size_t elementSetIndex(int setId) const;
57  void addElementSet(DataElementSet* elementSet);
58  void removeElementSet(const DataElementSet* elementSet);
59  void removeAllElementSets();
60 
61  bool isDataSourceValid(Str* failReason) const;
62 
63  int defaultDispacementResultId() const;
64 
65  bool computeCustomResults(int stateId, const DataStateSpec& stateSpec);
66 
67 public:
68  VTDatabase* internal_database();
69  const VTDatabase* internal_database() const;
70  void internal_setDatabase(VTDatabase* vtDB);
71  void internal_setGeometryCount(size_t geometryCount);
72 
73 private:
74  DataSource(int dataSourceId);
75 
76  virtual bool loadCustomResultBaseDependencies(int stateId, const DataStateSpec& stateSpec) = 0;
77  bool computeCustomResult(int stateId, const ResultInfo& info);
78  std::vector<CustomResultArgument> customResultArguments(int stateId, const ResultInfo& info) const;
79 
80  virtual void internal_wasAssignedToModel(ug::UnstructGridModel* model);
81 
82 private:
83  CEE_BASE_F(DataSourceInterface);
84  CEE_BASE_F(DataSourceReader);
85  CEE_BASE_F(DataSourceMemory);
86  CEE_PRIVATE_F(UnstructGridModel);
87  CEE_PRIVATE_F(ResultsQuery);
88 
89  CEE_PRIVATE_IMPL(DataSource);
90  CEE_DISALLOW_COPY_AND_ASSIGN(DataSource);
91 
92 };
93 
94 } // namespace ug
95 } // namespace cee
The data source of the model. For instance a file interface or custom built by the user...
Definition: DataSource.h:35
Namespace cee contains all functionality and structures under the Core component. ...
Definition: AppComponent.cpp:26
Simple class containing metadata info for a result.
Definition: ResultInfo.h:34
A general unicode based string class.
Definition: Str.h:28
This class implements a data source that will use a DataReader to populate the data source with geome...
Definition: DataSourceReader.h:30
Base class for all reference counted objects with built-in support for intrusive reference counting...
Definition: RefCountedObject.h:34
Specification of data to load for a state.
Definition: DataStateSpec.h:31
Metadata directory for a data source.
Definition: DataSourceDirectory.h:40
A state contains all data available for one time step, load case or frequency.
Definition: DataState.h:28
UnstructGridModel is a subclass of Model which adds specific model structure and functionality for re...
Definition: UnstructGridModel.h:72
A DataElementSet is a set of unique elements within a DataSource.
Definition: DataElementSet.h:31
A query object to retrieve results from a given DataSource.
Definition: ResultsQuery.h:37
A custom built data source for an unstructured grid model.
Definition: DataSourceMemory.h:28
A parent class for interface data sources.
Definition: DataSourceInterface.h:34