diff options
author | Kohei Yoshida <kyoshida@novell.com> | 2009-07-09 18:04:33 -0400 |
---|---|---|
committer | Kohei Yoshida <kyoshida@novell.com> | 2009-07-09 18:04:33 -0400 |
commit | 4d94bc14b2f8fc0aa1f2a5887803cffe2682b98f (patch) | |
tree | 5d28228f2b90e413a3424908f90427b1a0eaf679 | |
parent | c4e0c45675e3cffc51c018d61ec389986af9e210 (diff) |
Added dp members and member objects & other stuff.
-rw-r--r-- | cmake/CMakeLists.txt | 2 | ||||
-rw-r--r-- | inc/dphierarchies.hxx | 5 | ||||
-rw-r--r-- | inc/dphierarchy.hxx | 5 | ||||
-rw-r--r-- | inc/dplevels.hxx | 5 | ||||
-rw-r--r-- | inc/dpmember.hxx | 29 | ||||
-rw-r--r-- | inc/dpmembers.hxx | 46 | ||||
-rw-r--r-- | source/dpdimension.cxx | 5 | ||||
-rw-r--r-- | source/dpdimensions.cxx | 17 | ||||
-rw-r--r-- | source/dphierarchies.cxx | 5 | ||||
-rw-r--r-- | source/dphierarchy.cxx | 5 | ||||
-rw-r--r-- | source/dplevels.cxx | 12 | ||||
-rw-r--r-- | source/dpmember.cxx | 28 | ||||
-rw-r--r-- | source/dpmembers.cxx | 112 |
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(); +} + +} |