tzservices/tzserver/test/Integration/src/DstIntUtils.cpp
changeset 0 2e3d3ce01487
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tzservices/tzserver/test/Integration/src/DstIntUtils.cpp	Tue Feb 02 10:12:00 2010 +0200
@@ -0,0 +1,170 @@
+// Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of "Eclipse Public License v1.0"
+// which accompanies this distribution, and is available
+// at the URL "http://www.eclipse.org/legal/epl-v10.html".
+//
+// Initial Contributors:
+// Nokia Corporation - initial contribution.
+//
+// Contributors:
+//
+// Description:
+//
+
+#include "DstIntUtils.h"
+#include <tz.h>
+
+#include <caldataexchange.h>
+#include <caldataformat.h>
+#include <s32file.h>
+
+TInt CDstIntUtils::SetHomeTimeZoneL(const TDesC8& aLocation, const RTz &aServer)
+	{
+	CTzId *timezoneid = CTzId::NewL(aLocation);
+	CleanupStack::PushL(timezoneid);
+	TInt err;
+	TRAP(err, aServer.SetTimeZoneL(*timezoneid));
+	CleanupStack::PopAndDestroy(timezoneid);
+
+	return err;
+	}
+
+TInt CDstIntUtils::CheckHomeTimeZoneL(const RTz &aServer, const TDesC8& aLocation)
+	{
+	TInt err = KErrBadName;
+	CTzId *timezoneid = aServer.GetTimeZoneIdL();
+	if(timezoneid->TimeZoneNameID() == aLocation)
+		{
+		err = KErrNone;
+		}
+	delete timezoneid;
+	return err;
+	}
+
+
+void CDstIntUtils::AppendTimeParamStringL(TTime aTime, TDes& aParamString)
+	{
+	// This writes TTime according to a format specification, and this takes produces proper
+	// month and day values (ie they start with 1)
+	TBuf<15> dateString;
+	_LIT(KDateFormat, "%F%Y%M%D:%H%T%S");
+	aTime.FormatL(dateString, KDateFormat);
+	aParamString.Append(dateString);
+	}
+
+void ResetAndDestroyArrayOfEntries(TAny* aObject)
+	{
+	RPointerArray<CCalEntry>* array=static_cast<RPointerArray<CCalEntry>*>(aObject);
+	if (array)
+		{
+		array->ResetAndDestroy();
+		}
+	}
+
+void CDstIntUtils::OpenAgendaFileL(CCalSession& aSession, const TDesC& aFilename)
+	{
+	// Create the agenda file if does not exist
+	TRAPD(err, aSession.CreateCalFileL(aFilename));
+	if (err != KErrAlreadyExists)
+		{
+		User::LeaveIfError(err);
+		}
+		
+	// Now open it	
+	aSession.OpenL(aFilename);
+	}
+
+
+TCalLocalUid CDstIntUtils::ImportVCalL(RFs& aFs, CCalSession& aSession, CCalEntryView& aEntryView, const TDesC& aFileName)
+	{
+	RFileReadStream readStream;
+	User::LeaveIfError(readStream.Open(aFs, aFileName, EFileRead));
+	CleanupClosePushL(readStream);
+
+	// Create ptr array for new entries
+	RPointerArray<CCalEntry> entryArray;
+	CleanupStack::PushL(TCleanupItem(ResetAndDestroyArrayOfEntries, &entryArray));
+
+	CCalDataExchange* dataExchange = CCalDataExchange::NewL(aSession);
+	CleanupStack::PushL(dataExchange);
+	dataExchange->ImportL(KUidVCalendar, readStream, entryArray);
+
+	TInt elements = entryArray.Count();
+	TCalLocalUid id = 0;
+
+	if(elements > 0)
+		{
+		CCalEntry* entry = entryArray[0];
+		// add the first entry only
+		while (entryArray.Count() > 1)
+			{
+			delete entryArray[1];
+			entryArray.Remove(1);
+			}
+		TInt success = 0;
+		aEntryView.StoreL(entryArray, success);
+		id = entryArray[0]->LocalUidL();
+		}
+
+	CleanupStack::PopAndDestroy(dataExchange);
+	CleanupStack::PopAndDestroy();	// ResetAndDestroyArrayOfEntries(entryArray)
+	CleanupStack::PopAndDestroy();	// readStream.Close()
+
+	return id;
+	}
+
+
+TInt CDstIntUtils::CheckAgendaEntryL(CCalEntryView& aEntryView, const TCalLocalUid& aId, const TTime& aStart, const TTime& aEnd)
+	{
+	TInt err = KErrArgument;
+	CCalEntry* entry = aEntryView.FetchL(aId);
+	CleanupStack::PushL(entry);
+
+	TTime start = entry->StartTimeL().TimeLocalL();
+	TTime end   = entry->EndTimeL().TimeLocalL();
+
+#ifdef _DEBUG
+	TDateTime startDateTime = start.DateTime();
+	TDateTime aStartDateTime = aStart.DateTime();
+	TDateTime endDateTime = end.DateTime();
+	TDateTime aEndDateTime = aEnd.DateTime();
+#endif
+
+	if((aStart == start) && (aEnd == end))
+		{
+		err = KErrNone;
+		}
+	
+	CleanupStack::PopAndDestroy(entry);
+	return err;
+	}
+
+void CDstIntUtils::GenerateVCalL(RFs& aFs, const TDesC& aFileName, const TDesC& aStartTime, const TDesC& aEndTime)
+	{
+	RFile file;
+	file.Replace(aFs, aFileName, EFileWrite);
+
+	TBuf8<64> buf;
+
+	file.Write(_L8("BEGIN:VCALENDAR\r\n"));
+	file.Write(_L8("VERSION:1.0\r\n"));
+	file.Write(_L8("BEGIN:VEVENT\r\n"));
+	file.Write(_L8("CATEGORIES:MEETING\r\n"));
+	file.Write(_L8("DTSTART:"));
+	buf.Copy(aStartTime);
+	file.Write(buf);
+	file.Write(_L8("\r\n"));
+	file.Write(_L8("DTEND:"));
+	buf.Copy(aEndTime);
+	file.Write(buf);
+	file.Write(_L8("\r\n"));
+	file.Write(_L8("SUMMARY:TestMeeting\r\n"));
+	file.Write(_L8("DESCRIPTION:Test\r\n"));
+	file.Write(_L8("END:VEVENT\r\n"));
+	file.Write(_L8("END:VCALENDAR\r\n"));
+
+	file.Flush();
+	file.Close();
+	}