0

I have information in billing information and I want to retrieve using EWS Java API . Here is what I had so far

public List<String> findAppointments() throws Exception
{
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    Date startDate1 = formatter.parse("2012-08-26 12:00:00");
    Date endDate1 = formatter.parse("2012-10-06 13:00:00");   
    ExchangeService service = createService();
    CalendarFolder cf = CalendarFolder.bind(service, WellKnownFolderName.Calendar);
    FindItemsResults<Appointment> findResults = cf.findAppointments(new CalendarView(startDate1, endDate1));
    List<String> calList = new ArrayList<String>();

    ExtendedPropertyDefinition BillingInfo = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Common, "34101" , MapiPropertyType.String );
    PropertySet propertySet = new PropertySet(BasePropertySet.FirstClassProperties, BillingInfo);

    for (Appointment appt : findResults.getItems()) {
        appt = (Appointment)Item.bind(service, new ItemId(appt.getId()), propertySet);
        for(ExtendedProperty extendedProperty : appt.getExtendedProperties()) {
            System.out.println("extendedProperty :" + extendedProperty.getValue());
        }
    }
}

I'm getting stuck at Binding the appointment item to the property set.

Cœur
  • 37,241
  • 25
  • 195
  • 267

2 Answers2

1

Had task to get the same property. Below is example with another API but logic should be same:

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

import com.independentsoft.exchange.And;
import com.independentsoft.exchange.Appointment;
import com.independentsoft.exchange.AppointmentPropertyPath;
import com.independentsoft.exchange.FindItemResponse;
import com.independentsoft.exchange.IsGreaterThanOrEqualTo;
import com.independentsoft.exchange.IsLessThanOrEqualTo;
import com.independentsoft.exchange.ItemShape;
import com.independentsoft.exchange.MapiPropertyType;
import com.independentsoft.exchange.PropertyId;
import com.independentsoft.exchange.Service;
import com.independentsoft.exchange.ServiceException;
import com.independentsoft.exchange.StandardFolder;
import com.independentsoft.exchange.StandardPropertySet;

public class Test {

    public static void main(String[] args)
    {
        try
        {
            Service service = new Service("https://myserver/ews/Exchange.asmx", "username", "password");

            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            Date startTime = dateFormat.parse("2012-09-15 00:00:00");
            Date endTime = dateFormat.parse("2012-09-16 00:00:00");

            IsGreaterThanOrEqualTo restriction1 = new IsGreaterThanOrEqualTo(AppointmentPropertyPath.START_TIME, startTime);
            IsLessThanOrEqualTo restriction2 = new IsLessThanOrEqualTo(AppointmentPropertyPath.END_TIME, endTime);
            And restriction3 = new And(restriction1, restriction2);

            PropertyId billingInformationPropertyId = new PropertyId(0x8535, StandardPropertySet.COMMON, MapiPropertyType.STRING);

            ItemShape shape = new ItemShape(AppointmentPropertyPath.getAllPropertyPaths());
            shape.getPropertyPaths().add(billingInformationPropertyId);

            FindItemResponse response = service.findItem(StandardFolder.CALENDAR, shape, restriction3);

            for (int i = 0; i < response.getItems().size(); i++)
            {
                if (response.getItems().get(i) instanceof Appointment)
                {
                    Appointment appointment = (Appointment) response.getItems().get(i);

                    System.out.println("Subject = " + appointment.getSubject());
                    System.out.println("StartTime = " + appointment.getStartTime());
                    System.out.println("EndTime = " + appointment.getEndTime());                    

                    if (appointment.getExtendedProperty(billingInformationPropertyId) != null)
                    {
                        System.out.println("Billing Information = " + appointment.getExtendedProperty(billingInformationPropertyId).getValue());
                    }
                }
            }
        }
        catch (ServiceException e)
        {
            System.out.println(e.getMessage());
            System.out.println(e.getXmlMessage());

            e.printStackTrace();
        }
        catch (ParseException e)
        {
            e.printStackTrace();
        }
    }
}
JspSmith
  • 11
  • 1
  • I can see you had done using another API, but what I need to do is to somehow bind the property set to the property Item (appointment). This is the place where I got stuck. Any help in this is appreciated. I'm using EWS Java API – user1024529 Sep 18 '12 at 20:14
0

The Problem is that this Extended Property is only available in the Contact Schema. You will not get access to it in the Appointment Schema.

Exchange Server Protocols Master Property List

2.42 PidLidBilling

Description: Specifies billing information for the contact.