2012-05-25 4 views
7

이벤트 데이터가 Google 캘린더 (읽기 전용)로 제공되는 예약 시스템 용 Java REST API를 작성하는 중입니다. 현재 Google App Engine의 JPA 데이터 저장소에서 Google 캘린더의 이벤트 데이터를 가져와 저장하는 가장 좋은 방법을 찾으려고합니다. 또한 몇 가지 요구 사항이 있습니다.Google 캘린더 데이터 (API v3을 통해)를 Java가 포함 된 Google App Engine으로 가져 오기

  • 이전 캘린더 데이터를 저장해야합니다. 단순히 데이터베이스의 모든 것을 삭제하고 새 데이터로 바꾸는 것만으로는 충분하지 않습니다. 통계 목적으로 데이터의 내역보기를 유지하기 원하기 때문입니다.
  • 이벤트 데이터가 변경된 경우 (특히 삭제 대상) 사용자에게 알릴 필요가 있습니다. 이를 위해서는 JPA 데이터 스토어의 이전 이벤트 데이터로 새 이벤트 데이터 (API에서)를 비교해야합니다.

누구나 할 일에 대한 일반적인 지침과 제안 사항이 있습니까? 데이터를 데이터 스토어에 복제하려고 시도하여 올바른 방법으로 문제에 접근하고 있습니까? 데이터를 사용해야 할 때마다 API 요청을해야하나요? 그럴 경우 일부 메일 서비스를 시작하여 사용자에게 Google 캘린더 내에서 직접 이벤트 변경 사항을 알리는 방법이 있습니까?

+0

비슷한 문제 영역이 곧 시작될 것입니다.하지만 애플리케이션 내에서 일정을 만들고 캘린더에 변경 사항을 적용하고 캘린더에서 변경 사항을 읽지 않아 앱 내에 일정을 만들지 않기로 결정했습니다. – koma

+0

관리 사용자가 Google 캘린더를 계속 사용하기 때문에이 옵션을 사용할 수 없습니다. 결국 이벤트에서 CRUD와 유사한 작업을위한 관리 GUI를 개발할 필요가 없으므로 프로젝트가 더 쉬워집니다. – mhenry

답변

7

데이터 저장소의 각 이벤트 정보를 차선책으로 복제하려한다고 생각합니다. 모든 것을으로 만들려면 많은 양의 데이터를 저장해야합니다. 대부분의 데이터는 쓸모가 없을 것입니다.

통계 분석을 위해 데이터를 저장하려면 추적하려는 필드의 최소 집합을 결정하고 그 값을 저장하는 것이 좋습니다. 합당한 일련의 필드는 이벤트 ID, 이름, 시간, 참석자, 위치, 설명 및 부기 목적을위한 내부 버전 번호 일 수 있습니다. 필드가 변경 될 때마다 버전 번호를 증가시키고 새 필드 정보를 저장합니다. 추가 크레딧을 얻으려면 가장 최근에 검색 한 항목의 해시가 이미 저장된 항목과 일치 할 때 필드의 해시를 저장하고 새 버전을 저장하지 않을 수 있습니다.

더 이상 전체 이벤트를 서버에 저장하지 않으므로 이벤트 세부 정보가 필요할 때 API를 직접 쿼리할지 여부는 분명합니다.

Google 캘린더는 캘린더 일정을 만들거나 변경하면 이메일 알림을 제공합니다. 캘린더에 표시되는 새 일정에 대해 사용자에게 알리는 것과 관련하여이 경우 sendNotifications 필드 (insert a new event으로 전화 걸기)를 true으로 설정하면 쉽게 처리 할 수 ​​있습니다. API (및 사용자가 이벤트를 수정할 때의 Calendar UI)에서 업데이트 및 삭제 호출에 대해서도 비슷한 기능이 있습니다.

이 구현에서 가장 어려운 부분은 사용자가 수정하면 이벤트가 변경 될 때 응용 프로그램이 어떻게 인식하는지 결정하는 것입니다. 모든 이벤트가 하나의 캘린더에 표시되면 list of events에 대해 API를 폴링하고 updatedMin 필드에 마지막으로 사용한 시간을 사용할 수 있습니다 (코드에 의한 변경 사항은 데이터 저장소에 보관 된 데이터에 즉시 반영 될 수 있음). 업데이 트에 대한 쿼리. 이벤트가 여러 개의 캘린더에있는 경우 접근 방법은 동일하지만 캘린더 당 하나의 목록을 작성해야합니다.

응용 프로그램에 제공하는 자격 증명이 무엇이든간에 수정중인 일정에 읽고 쓸 수 있어야합니다. 초기 접근 방식으로, 추적중인 모든 이벤트에 참석자로 나열된 응용 프로그램의 마스터 달력을 만드는 것이 좋습니다. 사용자 대신 작성한 이벤트는 사용자를 참석자로 나열합니다. 사용자가 만들고 응용 프로그램과 연결하려는 이벤트는 주 달력을 참석자로 추가해야합니다.이 마지막 단계에서는 관리자가 시스템과 상호 작용할 수있는 올바른 방법으로 교육을 받아야 할 수 있습니다.

위의 대안은 모든 사용자가 자신의 캘린더에 대한 액세스 권한을 애플리케이션에 위임하도록하는 것이지만 여러 개의 자격 증명 세트를 관리해야하고 사용자 캘린더에서 추적에 관심이없는 이벤트를 제거해야합니다 .

관련 문제