summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKohei Yoshida <kyoshida@novell.com>2009-07-09 18:04:33 -0400
committerKohei Yoshida <kyoshida@novell.com>2009-07-09 18:04:33 -0400
commit4d94bc14b2f8fc0aa1f2a5887803cffe2682b98f (patch)
tree5d28228f2b90e413a3424908f90427b1a0eaf679
parentc4e0c45675e3cffc51c018d61ec389986af9e210 (diff)
Added dp members and member objects & other stuff.
-rw-r--r--cmake/CMakeLists.txt2
-rw-r--r--inc/dphierarchies.hxx5
-rw-r--r--inc/dphierarchy.hxx5
-rw-r--r--inc/dplevels.hxx5
-rw-r--r--inc/dpmember.hxx29
-rw-r--r--inc/dpmembers.hxx46
-rw-r--r--source/dpdimension.cxx5
-rw-r--r--source/dpdimensions.cxx17
-rw-r--r--source/dphierarchies.cxx5
-rw-r--r--source/dphierarchy.cxx5
-rw-r--r--source/dplevels.cxx12
-rw-r--r--source/dpmember.cxx28
-rw-r--r--source/dpmembers.cxx112
13 files changed, 256 insertions, 20 deletions
diff --git a/cmake/CMakeLists.txt b/cmake/CMakeLists.txt
index a0fab7b..24be023 100644
--- a/cmake/CMakeLists.txt
+++ b/cmake/CMakeLists.txt
@@ -33,6 +33,8 @@ set(SRC_FILES
../source/dphierarchy.cxx
../source/dplevels.cxx
../source/dplevel.cxx
+ ../source/dpmembers.cxx
+ ../source/dpmember.cxx
)
add_library(${TARGET_NAME} SHARED ${SRC_FILES})
diff --git a/inc/dphierarchies.hxx b/inc/dphierarchies.hxx
index 2988257..25eda92 100644
--- a/inc/dphierarchies.hxx
+++ b/inc/dphierarchies.hxx
@@ -10,12 +10,14 @@
namespace dpsource {
+class DPDimension;
+
class DPHierarchies : public ::cppu::WeakImplHelper2<
::com::sun::star::container::XNameAccess,
::com::sun::star::container::XIndexAccess >
{
public:
- DPHierarchies();
+ explicit DPHierarchies(DPDimension* pDim);
~DPHierarchies();
// XNameAccess
@@ -52,6 +54,7 @@ private:
private:
NamedObjMapType maHierarchies;
+ DPDimension* mpDim;
};
diff --git a/inc/dphierarchy.hxx b/inc/dphierarchy.hxx
index 85649ea..901bca2 100644
--- a/inc/dphierarchy.hxx
+++ b/inc/dphierarchy.hxx
@@ -14,12 +14,14 @@ namespace com { namespace sun { namespace star {
namespace dpsource {
+class DPDimension;
+
class DPHierarchy : public ::cppu::WeakImplHelper2<
::com::sun::star::container::XNamed,
::com::sun::star::sheet::XLevelsSupplier >
{
public:
- DPHierarchy();
+ explicit DPHierarchy(DPDimension* pDim);
~DPHierarchy();
// XNamed
@@ -38,6 +40,7 @@ private:
::com::sun::star::uno::Reference< ::com::sun::star::container::XNameAccess >
mxLevels;
::rtl::OUString maName;
+ DPDimension* mpDim;
};
diff --git a/inc/dplevels.hxx b/inc/dplevels.hxx
index 5418b7a..dccd2f4 100644
--- a/inc/dplevels.hxx
+++ b/inc/dplevels.hxx
@@ -9,10 +9,12 @@
namespace dpsource {
+class DPDimension;
+
class DPLevels : public ::cppu::WeakImplHelper1< ::com::sun::star::container::XNameAccess >
{
public:
- DPLevels();
+ DPLevels(DPDimension* pDim);
~DPLevels();
// XNameAccess
@@ -39,6 +41,7 @@ private:
private:
NamedObjMapType maLevels;
+ DPDimension* mpDim;
};
}
diff --git a/inc/dpmember.hxx b/inc/dpmember.hxx
new file mode 100644
index 0000000..75d3805
--- /dev/null
+++ b/inc/dpmember.hxx
@@ -0,0 +1,29 @@
+#ifndef __DPMEMBER_HXX__
+#define __DPMEMBER_HXX__
+
+#include <cppuhelper/implbase1.hxx>
+
+#include <com/sun/star/container/XNamed.hpp>
+
+namespace dpsource {
+
+class DPMember : public ::cppu::WeakImplHelper1< ::com::sun::star::container::XNamed >
+{
+public:
+ DPMember();
+ ~DPMember();
+
+ // XNamed
+
+ ::rtl::OUString SAL_CALL getName() throw (::com::sun::star::uno::RuntimeException);
+
+ void SAL_CALL setName(const ::rtl::OUString& aName)
+ throw (::com::sun::star::uno::RuntimeException);
+
+private:
+ ::rtl::OUString maName;
+};
+
+}
+
+#endif
diff --git a/inc/dpmembers.hxx b/inc/dpmembers.hxx
new file mode 100644
index 0000000..25cd55d
--- /dev/null
+++ b/inc/dpmembers.hxx
@@ -0,0 +1,46 @@
+#ifndef __DPMEMBERS_HXX__
+#define __DPMEMBERS_HXX__
+
+#include <cppuhelper/implbase1.hxx>
+
+#include <com/sun/star/container/XNameAccess.hpp>
+
+#include "global.hxx"
+
+namespace dpsource {
+
+class DPMembers : public ::cppu::WeakImplHelper1< ::com::sun::star::container::XNameAccess >
+{
+public:
+ DPMembers();
+ ~DPMembers();
+
+ // XNameAccess
+
+ virtual ::com::sun::star::uno::Any SAL_CALL getByName(const ::rtl::OUString& aName)
+ throw (::com::sun::star::container::NoSuchElementException,
+ ::com::sun::star::lang::WrappedTargetException,
+ ::com::sun::star::uno::RuntimeException);
+
+ virtual ::com::sun::star::uno::Sequence< ::rtl::OUString > SAL_CALL
+ getElementNames() throw (::com::sun::star::uno::RuntimeException);
+
+ virtual sal_Bool SAL_CALL hasByName(const ::rtl::OUString& aName)
+ throw (::com::sun::star::uno::RuntimeException);
+
+ virtual ::com::sun::star::uno::Type SAL_CALL getElementType()
+ throw (::com::sun::star::uno::RuntimeException);
+
+ virtual sal_Bool SAL_CALL hasElements()
+ throw (::com::sun::star::uno::RuntimeException);
+
+private:
+ void init();
+
+private:
+ NamedObjMapType maMembers;
+};
+
+}
+
+#endif
diff --git a/source/dpdimension.cxx b/source/dpdimension.cxx
index 097778d..66db901 100644
--- a/source/dpdimension.cxx
+++ b/source/dpdimension.cxx
@@ -57,12 +57,10 @@ namespace dpsource {
DPDimension::DPDimension()
{
- fprintf(stdout, "DPDimension::DPDimension: ctor\n");
}
DPDimension::~DPDimension()
{
- fprintf(stdout, "DPDimension::~DPDimension: dtor\n");
}
// XNamed
@@ -81,9 +79,8 @@ void DPDimension::setName(const OUString& aName) throw (RuntimeException)
Reference<XNameAccess> DPDimension::getHierarchies() throw (RuntimeException)
{
- StackPrinter __stack_printer__("dpsource/DPDimension::getHierarchies");
if (!mxHierarchies.is())
- mxHierarchies.set(new DPHierarchies);
+ mxHierarchies.set(new DPHierarchies(this));
return mxHierarchies;
}
diff --git a/source/dpdimensions.cxx b/source/dpdimensions.cxx
index f3ebf71..a4c2010 100644
--- a/source/dpdimensions.cxx
+++ b/source/dpdimensions.cxx
@@ -69,11 +69,18 @@ DPDimensions::~DPDimensions()
void DPDimensions::init()
{
maDimensions.clear();
-
- OUString aDimName = OUString::createFromAscii("Andy");
- Reference<XNamed> xRef(new DPDimension);
- xRef->setName(aDimName);
- maDimensions.insert(NamedObjMapType::value_type(aDimName, xRef));
+
+ static const char* ppNames[] = {
+ "Andy", "Bruce", "Charlie", 0
+ };
+
+ for (int i = 0; ppNames[i]; ++i)
+ {
+ OUString aDimName = OUString::createFromAscii(ppNames[i]);
+ Reference<XNamed> xRef(new DPDimension);
+ xRef->setName(aDimName);
+ maDimensions.insert(NamedObjMapType::value_type(aDimName, xRef));
+ }
}
Any DPDimensions::getByName(const OUString& aName)
diff --git a/source/dphierarchies.cxx b/source/dphierarchies.cxx
index 9b4a6b6..206a7a7 100644
--- a/source/dphierarchies.cxx
+++ b/source/dphierarchies.cxx
@@ -55,7 +55,8 @@ private:
namespace dpsource {
-DPHierarchies::DPHierarchies()
+DPHierarchies::DPHierarchies(DPDimension* pDim) :
+ mpDim(pDim)
{
init();
}
@@ -70,7 +71,7 @@ void DPHierarchies::init()
// For now, only create a 'flat' hierarchy.
OUString aName = OUString::createFromAscii("flat");
- Reference<XNamed> xFlatHier(new DPHierarchy);
+ Reference<XNamed> xFlatHier(new DPHierarchy(mpDim));
xFlatHier->setName(aName);
maHierarchies.insert(
NamedObjMapType::value_type(aName, xFlatHier));
diff --git a/source/dphierarchy.cxx b/source/dphierarchy.cxx
index cc7c8f5..216da9e 100644
--- a/source/dphierarchy.cxx
+++ b/source/dphierarchy.cxx
@@ -11,7 +11,8 @@ using ::rtl::OUString;
namespace dpsource {
-DPHierarchy::DPHierarchy()
+DPHierarchy::DPHierarchy(DPDimension* pDim) :
+ mpDim(pDim)
{
}
@@ -34,7 +35,7 @@ void DPHierarchy::setName(const OUString& aName) throw (RuntimeException)
Reference<XNameAccess> DPHierarchy::getLevels() throw (RuntimeException)
{
if (!mxLevels.is())
- mxLevels.set(new DPLevels);
+ mxLevels.set(new DPLevels(mpDim));
return mxLevels;
}
diff --git a/source/dplevels.cxx b/source/dplevels.cxx
index 4a43bc1..7311b00 100644
--- a/source/dplevels.cxx
+++ b/source/dplevels.cxx
@@ -1,6 +1,7 @@
#include "dplevels.hxx"
#include "dplevel.hxx"
+#include "dpdimension.hxx"
#include <com/sun/star/container/XNamed.hpp>
@@ -54,7 +55,8 @@ private:
namespace dpsource {
-DPLevels::DPLevels()
+DPLevels::DPLevels(DPDimension* pDim) :
+ mpDim(pDim)
{
init();
}
@@ -67,14 +69,16 @@ void DPLevels::init()
{
maLevels.clear();
- // TODO: A flat hierarchy only has one level, and its name equals the name
- // of the dimension.
- OUString aName = OUString::createFromAscii("Andy");
+ // A flat hierarchy only has one level, and its name equals the name of
+ // the dimension.
+ OUString aName = mpDim->getName();
Reference<XNamed> xRef(new DPLevel);
xRef->setName(aName);
maLevels.insert(NamedObjMapType::value_type(aName, xRef));
}
+// XNameAccess
+
Any DPLevels::getByName(const OUString& aName)
throw (NoSuchElementException, WrappedTargetException, RuntimeException)
{
diff --git a/source/dpmember.cxx b/source/dpmember.cxx
new file mode 100644
index 0000000..541b21a
--- /dev/null
+++ b/source/dpmember.cxx
@@ -0,0 +1,28 @@
+
+#include "dpmember.hxx"
+
+using ::com::sun::star::uno::RuntimeException;
+using ::rtl::OUString;
+
+namespace dpsource {
+
+DPMember::DPMember()
+{
+}
+DPMember::~DPMember()
+{
+}
+
+// XNamed
+
+OUString DPMember::getName() throw (RuntimeException)
+{
+ return maName;
+}
+
+void DPMember::setName(const OUString& aName) throw (RuntimeException)
+{
+ maName = aName;
+}
+
+}
diff --git a/source/dpmembers.cxx b/source/dpmembers.cxx
new file mode 100644
index 0000000..ed34bc5
--- /dev/null
+++ b/source/dpmembers.cxx
@@ -0,0 +1,112 @@
+
+#include "dpmembers.hxx"
+
+#include <com/sun/star/container/XNamed.hpp>
+
+using ::com::sun::star::container::NoSuchElementException;
+using ::com::sun::star::container::XNameAccess;
+using ::com::sun::star::container::XNamed;
+using ::com::sun::star::lang::WrappedTargetException;
+using ::com::sun::star::uno::Any;
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::uno::RuntimeException;
+using ::com::sun::star::uno::Sequence;
+using ::com::sun::star::uno::Type;
+using ::rtl::OUString;
+
+#include <stdio.h>
+#include <string>
+#include <sys/time.h>
+
+namespace {
+
+class StackPrinter
+{
+public:
+ explicit StackPrinter(const char* msg) :
+ msMsg(msg)
+ {
+ fprintf(stdout, "%s: --begin\n", msMsg.c_str());
+ mfStartTime = getTime();
+ }
+
+ ~StackPrinter()
+ {
+ double fEndTime = getTime();
+ fprintf(stdout, "%s: --end (duration: %g sec)\n", msMsg.c_str(), (fEndTime-mfStartTime));
+ }
+
+private:
+ double getTime() const
+ {
+ timeval tv;
+ gettimeofday(&tv, NULL);
+ return tv.tv_sec + tv.tv_usec / 1000000.0;
+ }
+
+ ::std::string msMsg;
+ double mfStartTime;
+};
+
+}
+
+namespace dpsource {
+
+DPMembers::DPMembers()
+{
+ init();
+}
+
+DPMembers::~DPMembers()
+{
+}
+
+void DPMembers::init()
+{
+}
+
+// XNameAccess
+
+Any DPMembers::getByName(const OUString& aName)
+ throw (NoSuchElementException, WrappedTargetException, RuntimeException)
+{
+ StackPrinter __stack_printer__("dpsource/DPMembers::getByName");
+ fprintf(stdout, "DPMembers::getByName: name = '%s'\n", rtl::OUStringToOString(aName, RTL_TEXTENCODING_UTF8).getStr());
+ NamedObjMapType::const_iterator itr = maMembers.find(aName);
+ if (itr != maMembers.end())
+ {
+ Any any;
+ any <<= itr->second;
+ return any;
+ }
+ throw NoSuchElementException();
+ return Any();
+}
+
+Sequence<OUString> DPMembers::getElementNames() throw (RuntimeException)
+{
+ StackPrinter __stack_printer__("dpsource/DPMembers::getElementNames");
+ Sequence<OUString> aNames(maMembers.size());
+ NamedObjMapType::const_iterator itr = maMembers.begin(), itrEnd = maMembers.end();
+ for (sal_Int32 i = 0; itr != itrEnd; ++itr, ++i)
+ aNames[i] = itr->first;
+
+ return aNames;
+}
+
+sal_Bool DPMembers::hasByName(const OUString& aName) throw (RuntimeException)
+{
+ return maMembers.count(aName) > 0;
+}
+
+Type DPMembers::getElementType() throw (RuntimeException)
+{
+ return getCppuType(static_cast< Reference<XNamed>* >(NULL));
+}
+
+sal_Bool DPMembers::hasElements() throw (RuntimeException)
+{
+ return !maMembers.empty();
+}
+
+}