quelea-projection / Quelea

Open source projection software for churches.
https://quelea.org
GNU General Public License v3.0
159 stars 145 forks source link

Planning Centre integration is not working properly #520

Closed ricardomvalverde closed 2 years ago

ricardomvalverde commented 2 years ago

I don’t know whether the issue occurs when there are specific parameters filled up in planning centre or when the API tries to retrieve a great amount of data.

I tried on 2021 as well on latest 2010 versions and it didn’t work. I capture some data in quelea-debug.log that probably may help to find what is causing that error: Nov 03, 2021 8:50:32 PM org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask call WARNING: Exception with parser java.lang.RuntimeException: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of java.lang.String out of START_OBJECT token at [Source: UNKNOWN; line: -1, column: -1] (through reference chain: org.quelea.planningcenter.model.services.PlanTime[“team_reminders”]->java.util.ArrayList[0]) at com.github.jasminb.jsonapi.ResourceConverter.readDocumentCollection(ResourceConverter.java:306) at com.github.jasminb.jsonapi.retrofit.JSONAPIDocumentResponseBodyConverter.convert(JSONAPIDocumentResponseBodyConverter.java:36) at com.github.jasminb.jsonapi.retrofit.JSONAPIDocumentResponseBodyConverter.convert(JSONAPIDocumentResponseBodyConverter.java:16) at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:223) at retrofit2.OkHttpCall.execute(OkHttpCall.java:186) at org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask.processServiceTypeFolder(PlanningCenterOnlineImportDialog.java:206) at org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask.call(PlanningCenterOnlineImportDialog.java:170) at org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask.call(PlanningCenterOnlineImportDialog.java:161) at javafx.concurrent.Task$TaskCallable.call(Task.java:1423) at java.util.concurrent.FutureTask.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of java.lang.String out of START_OBJECT token at [Source: UNKNOWN; line: -1, column: -1] (through reference chain: org.quelea.planningcenter.model.services.PlanTime[“team_reminders”]->java.util.ArrayList[0]) at com.fasterxml.jackson.databind.exc.MismatchedInputException.from(MismatchedInputException.java:59) at com.fasterxml.jackson.databind.DeserializationContext.reportInputMismatch(DeserializationContext.java:1464) at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1238) at com.fasterxml.jackson.databind.DeserializationContext.handleUnexpectedToken(DeserializationContext.java:1148) at com.fasterxml.jackson.databind.deser.std.StdDeserializer._parseString(StdDeserializer.java:609) at com.fasterxml.jackson.databind.deser.std.StringCollectionDeserializer.deserialize(StringCollectionDeserializer.java:207) at com.fasterxml.jackson.databind.deser.std.StringCollectionDeserializer.deserialize(StringCollectionDeserializer.java:173) at com.fasterxml.jackson.databind.deser.std.StringCollectionDeserializer.deserialize(StringCollectionDeserializer.java:21) at com.fasterxml.jackson.databind.deser.impl.MethodProperty.deserializeAndSet(MethodProperty.java:129) at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:293) at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:156) at com.fasterxml.jackson.databind.ObjectMapper._readValue(ObjectMapper.java:4453) at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2696) at com.fasterxml.jackson.databind.ObjectMapper.treeToValue(ObjectMapper.java:3149) at com.github.jasminb.jsonapi.ResourceConverter.readObject(ResourceConverter.java:330) at com.github.jasminb.jsonapi.ResourceConverter.getIncludedResources(ResourceConverter.java:428) at com.github.jasminb.jsonapi.ResourceConverter.parseIncluded(ResourceConverter.java:388) at com.github.jasminb.jsonapi.ResourceConverter.readDocumentCollection(ResourceConverter.java:281) … 10 more

If you want temporarily my planning centre account to run some tests, please inform me.

I hope you help me to solve that problem and so I can use this awesome feature in our church.

Regards, Ricardo

quelea-bot commented 2 years ago

This issue has been mentioned on Quelea community. There might be relevant details there:

https://quelea.discourse.group/t/planning-center-import-window-is-empty-i-dont-know-where-to-login/560/10

berry120 commented 2 years ago

Had a go at fixing this - I think I've narrowed down the issue in any case. Could you try again with the latest CI and let me know if there's any improvement, or if not any difference in the error message?

ricardomvalverde commented 2 years ago

Hi Berry! Thanks for you effort to fix this issue. I've downloded the 2022 CI version (https://github.com/quelea-projection/Quelea/releases/download/CI-RELEASE/quelea-CI-UNSTABLE-x64-windows-install.exe) and tested the Planning Center integration. It didn't work, but the error is different, as you can see below. As I mentioned, if you want to test with my Planning Center account, I can share it with you. Also, I have no problem to test this feature in next nightly nreleases. Feel free to choose the best option for you.

Regards, Ricardo

Dec 06, 2021 7:45:48 PM org.quelea.windows.main.MainPanel INFO: Creating split panels

Dec 06, 2021 7:45:48 PM org.quelea.windows.main.MainPanel INFO: Created main panel

Dec 06, 2021 7:47:22 PM org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask call WARNING: Exception with parser java.lang.IllegalArgumentException: Included section contains unknown resource type: ItemTime at com.github.jasminb.jsonapi.ResourceConverter.getIncludedResources(ResourceConverter.java:433) at com.github.jasminb.jsonapi.ResourceConverter.parseIncluded(ResourceConverter.java:388) at com.github.jasminb.jsonapi.ResourceConverter.readDocumentCollection(ResourceConverter.java:281) at com.github.jasminb.jsonapi.retrofit.JSONAPIDocumentResponseBodyConverter.convert(JSONAPIDocumentResponseBodyConverter.java:36) at com.github.jasminb.jsonapi.retrofit.JSONAPIDocumentResponseBodyConverter.convert(JSONAPIDocumentResponseBodyConverter.java:16) at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:223) at retrofit2.OkHttpCall.execute(OkHttpCall.java:186) at org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask.processServiceTypeFolder(PlanningCenterOnlineImportDialog.java:206) at org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask.call(PlanningCenterOnlineImportDialog.java:163) at org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask.call(PlanningCenterOnlineImportDialog.java:154) at javafx.concurrent.Task$TaskCallable.call(Task.java:1426) at java.base/java.util.concurrent.FutureTask.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source)

Dec 06, 2021 7:47:49 PM org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask call WARNING: Exception with parser java.lang.IllegalArgumentException: Included section contains unknown resource type: ItemTime at com.github.jasminb.jsonapi.ResourceConverter.getIncludedResources(ResourceConverter.java:433) at com.github.jasminb.jsonapi.ResourceConverter.parseIncluded(ResourceConverter.java:388) at com.github.jasminb.jsonapi.ResourceConverter.readDocumentCollection(ResourceConverter.java:281) at com.github.jasminb.jsonapi.retrofit.JSONAPIDocumentResponseBodyConverter.convert(JSONAPIDocumentResponseBodyConverter.java:36) at com.github.jasminb.jsonapi.retrofit.JSONAPIDocumentResponseBodyConverter.convert(JSONAPIDocumentResponseBodyConverter.java:16) at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:223) at retrofit2.OkHttpCall.execute(OkHttpCall.java:186) at org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask.processServiceTypeFolder(PlanningCenterOnlineImportDialog.java:206) at org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask.call(PlanningCenterOnlineImportDialog.java:163) at org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask.call(PlanningCenterOnlineImportDialog.java:154) at javafx.concurrent.Task$TaskCallable.call(Task.java:1426)

berry120 commented 2 years ago

@ricardomvalverde Let's stick with this for now and if it takes too long or I get stuck, we can fall back to grabbing credentials and going from there :-)

Made another change - could you give the CI release another try?

ricardomvalverde commented 2 years ago

Of course. I'm downloading and I'll report soon.

berry120 commented 2 years ago

@berry120 Ah sorry, you're too fast - new CI release isn't actually built yet! I'll ping you here when it's up.

berry120 commented 2 years ago

@ricardomvalverde Up now 👍

ricardomvalverde commented 2 years ago

I tested and the error now is on "ItemNote".

Dec 06, 2021 8:50:36 PM org.quelea.windows.main.MainPanel INFO: Creating split panels

Dec 06, 2021 8:50:36 PM org.quelea.windows.main.MainPanel INFO: Created main panel

Dec 06, 2021 8:51:10 PM org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask call WARNING: Exception with parser java.lang.IllegalArgumentException: Included section contains unknown resource type: ItemNote at com.github.jasminb.jsonapi.ResourceConverter.getIncludedResources(ResourceConverter.java:433) at com.github.jasminb.jsonapi.ResourceConverter.parseIncluded(ResourceConverter.java:388) at com.github.jasminb.jsonapi.ResourceConverter.readDocumentCollection(ResourceConverter.java:281) at com.github.jasminb.jsonapi.retrofit.JSONAPIDocumentResponseBodyConverter.convert(JSONAPIDocumentResponseBodyConverter.java:36) at com.github.jasminb.jsonapi.retrofit.JSONAPIDocumentResponseBodyConverter.convert(JSONAPIDocumentResponseBodyConverter.java:16) at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:223) at retrofit2.OkHttpCall.execute(OkHttpCall.java:186) at org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask.processServiceTypeFolder(PlanningCenterOnlineImportDialog.java:206) at org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask.call(PlanningCenterOnlineImportDialog.java:163) at org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask.call(PlanningCenterOnlineImportDialog.java:154) at javafx.concurrent.Task$TaskCallable.call(Task.java:1426) at java.base/java.util.concurrent.FutureTask.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source)

ricardomvalverde commented 2 years ago

"Ah sorry, you're too fast - new CI release isn't actually built yet! I'll ping you here when it's up." No problem! I realised the version was 1059 when I tried to downloaded and I waited till it changed to 1060. :-)

ricardomvalverde commented 2 years ago

On build 1061, "ItemNote" exception as well.

Dec 06, 2021 9:26:24 PM org.quelea.windows.main.MainPanel INFO: Creating split panels

Dec 06, 2021 9:26:24 PM org.quelea.windows.main.MainPanel INFO: Created main panel

Dec 06, 2021 9:27:10 PM org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask call WARNING: Exception with parser java.lang.IllegalArgumentException: Included section contains unknown resource type: ItemNote at com.github.jasminb.jsonapi.ResourceConverter.getIncludedResources(ResourceConverter.java:433) at com.github.jasminb.jsonapi.ResourceConverter.parseIncluded(ResourceConverter.java:388) at com.github.jasminb.jsonapi.ResourceConverter.readDocumentCollection(ResourceConverter.java:281) at com.github.jasminb.jsonapi.retrofit.JSONAPIDocumentResponseBodyConverter.convert(JSONAPIDocumentResponseBodyConverter.java:36) at com.github.jasminb.jsonapi.retrofit.JSONAPIDocumentResponseBodyConverter.convert(JSONAPIDocumentResponseBodyConverter.java:16) at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:223) at retrofit2.OkHttpCall.execute(OkHttpCall.java:186) at org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask.processServiceTypeFolder(PlanningCenterOnlineImportDialog.java:206) at org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask.call(PlanningCenterOnlineImportDialog.java:163) at org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask.call(PlanningCenterOnlineImportDialog.java:154) at javafx.concurrent.Task$TaskCallable.call(Task.java:1426) at java.base/java.util.concurrent.FutureTask.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source)

berry120 commented 2 years ago

@ricardomvalverde Is the error any different with build 1062? If there's no change, then ping me at berry120@gmail.com and we can sort out getting access to your planning centre account to try and hopefully fix this a bit quicker :-)

ricardomvalverde commented 2 years ago

The same error with build 1062. I'll send my Planning Center credentials to your mail.

Dec 07, 2021 1:08:03 PM org.quelea.windows.main.MainPanel INFO: Created main panel

Dec 07, 2021 1:08:53 PM org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask call WARNING: Exception with parser java.lang.IllegalArgumentException: Included section contains unknown resource type: ItemNote at com.github.jasminb.jsonapi.ResourceConverter.getIncludedResources(ResourceConverter.java:433) at com.github.jasminb.jsonapi.ResourceConverter.parseIncluded(ResourceConverter.java:388) at com.github.jasminb.jsonapi.ResourceConverter.readDocumentCollection(ResourceConverter.java:281) at com.github.jasminb.jsonapi.retrofit.JSONAPIDocumentResponseBodyConverter.convert(JSONAPIDocumentResponseBodyConverter.java:36) at com.github.jasminb.jsonapi.retrofit.JSONAPIDocumentResponseBodyConverter.convert(JSONAPIDocumentResponseBodyConverter.java:16) at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:223) at retrofit2.OkHttpCall.execute(OkHttpCall.java:186) at org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask.processServiceTypeFolder(PlanningCenterOnlineImportDialog.java:206) at org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask.call(PlanningCenterOnlineImportDialog.java:163) at org.quelea.services.importexport.PlanningCenterOnlineImportDialog$UpdatePlanTask.call(PlanningCenterOnlineImportDialog.java:154) at javafx.concurrent.Task$TaskCallable.call(Task.java:1426) at java.base/java.util.concurrent.FutureTask.run(Unknown Source) at java.base/java.lang.Thread.run(Unknown Source)

DeeTigIT commented 2 years ago

I've tested with the latest CI-release. When trying to import: nothing is shown Is that by design?

S1

With the previous CI's this was different:

S2

The following post describes my Planing Center set-up:

https://quelea.discourse.group/t/planning-center-import-window-is-empty-i-dont-know-where-to-login/560/5

berry120 commented 2 years ago

@DeeTigIT The issue that @ricardomvalverde was having (once we fixed the initial import exceptions at least!) was that it was importing all the old services, but none of the newer ones (since it's capped at 25 or so by default, and bringing in all the old services would take ages and wouldn't be much use.)

As a result, I decided that, by default, the best behaviour might be to bring in all the services newer than a month old, so we don't have a clear cutoff as soon as the date has passed, but we also don't keep bringing in old services that won't be used. I think that's why you're likely not seeing anything there.

This brings a general question though - in real-world use, are there still others who need to access old services? If so then we need to revisit this again.

That being said, if there are no newer services then I've now (in the latest CI) told it to switch back to the old way of doing things, so hopefully you should still see the same output as before in that latest CI release.

DeeTigIT commented 2 years ago

An idea that pops up: perhaps add an import/export property for Planning Center "max schedule days back" (default: 30) . For Elevanto there is already an import/export property.

afbeelding

With a corresponding entry in the quelea.properties file: planning.center.max.days.back

ricardomvalverde commented 2 years ago

Hi @DeeTigIT! I explained to @berry120 that in my case, the integration is used to prepare the schedule exactly with the same lyrics adopted by music minister in Planning Centre. So, particularly, it has no benefit to view only old dates than current day, since I couldn't import the lyrics, forcing to input this data manually in Quelea.

This functionality I suggested is based on projection software named Proclaim (a subscription software I tried), which now is not the unique software to import lyrics from Planning Centre. :-) Proclaim only allows to get new services plans from Planning Centre, because the focus is to gain time for the software projection users in slides preparation task, besides to ensure the lyrics that will be projected are as is with the lyrics inserted by the music minister.

Maybe I'm not viewing the benefit of viewing/importing old services plans of the Planning Centre. May you mention the benefit in your specific case, DeeTigIT?

DeeTigIT commented 2 years ago

Hello Ricardo, Berry, Such a case could be: suppose the worship team starts preparing the schedule in Planning Center at the beginning of the week. And the projection team imports the PC schedule in Quelea at saturday evening, the day before the service. Looking for PC schedules with exact the current day then results in no hits. In other words: Q has to look back a number of days in time to select PC schedules and show them in the import dialog. An infinite number of days back would be overkill (and performance destroying). In my case 7 days back would be enough, in Ricardo's case 1-2 days. This led me to the idea of a quelea.properties file entry "planning.center.max.days.back" to control the PC schedule selection by Quelea. Regards, Dirk

ricardomvalverde commented 2 years ago

Hi @DeeTigIT. I couldn't comprehend your hypothesis. Imagine worship team starts preparing the schedule in Planning Centre at the beginning of the week, as you said. When they do that, they create all the service plan in the correspondent service date of the week it will happen. For example, it they create at the beginning of the week, they will do that on next Sunday date. So, even projection team imports at Saturday evening or at Sunday morning before services, they should view this service plan. Anyway, what @berry120 implemented on latest CI build should satisfy all demands and the implementation you suggested (modify how many days back) may improve the wait time in import window. Regards, Ricardo

ricardomvalverde commented 2 years ago

Berry and DeeTigIT, I forgot to say excuse for eventually some text may be misundertoood and offend someone. As a non native language (I'm Brazilian), my vocabulary is scarce and my English is not so good. Be sure my intention is the best possible. God bless all that dedicate time for this precious tool, in special Berry.

Regards, Ricardo

berry120 commented 2 years ago

@ricardomvalverde @DeeTigIT That option should now be added. It's defaulted to 31 days in the past but can be adjusted up to 2 years.

DuebelWalter commented 2 years ago

@berry120 Did you build a version with the actual fix? I can only see the build 1066 (which is 2 days old).

berry120 commented 2 years ago

@DuebelWalter Sorry, my bad - we'd run out of build credits. That should now be sorted and a new CI version should appear in the next 20 minutes or so.

DuebelWalter commented 2 years ago

The Fix with the 2 years works perfect for me. I have found another problem. We use three different services in Planning Center in our church.

But in Quelea only one type of service is displayed.("Gottesdienste").

If you need my Planning Center Account for fixing this issue please tell me.

Screenshot 2021-12-13 233348 Screenshot 2021-12-13 233444 .

ricardomvalverde commented 2 years ago

Tested build 1067 and the slider bar is working fine. One thing that only Quelea does, compared to all projection softwares I've tested, is to import videos from Planning Centre, not only songs. That feature is awesome!!!! I'll open a new issue to allow import all the other items of the service plan inserted in Planning Centre.

berry120 commented 2 years ago

@DuebelWalter Hmm, that's odd as it should loop through all the available service types. If you're able to contact me at berry120@gmail.com to pass over login details for planning centre then I'll take a look.

DuebelWalter commented 2 years ago

@berry120 I send you an Email with my Login Data. My Emailadress is metaler@gmx.net Thank you for your Help

berry120 commented 2 years ago

@DuebelWalter That'd be great, thanks! (Still haven't received it, not sure if you've sent it yet?)

DuebelWalter commented 2 years ago

Ok , I try it a second time, maybe the first time something went wrong. Edit: I hope the email reaches you this time. I unfortunately do not know what went wrong with the first attempt

berry120 commented 2 years ago

@DuebelWalter Still no email I'm afraid. Definitely sending it to berry120@gmail.com?

DuebelWalter commented 2 years ago

@berry120 I tried today from my smartphone, i copied your emailadress. I hope it works this time. But I just cant say what I'm doing wrong

berry120 commented 2 years ago

Clearing this from 2022.0 as it's a lot better than it was, and I'm unable to reproduce any of the other issues at the moment. Certainly not against fixing it if we can, just don't want to hold 2022.0 up as it has a number of other bugfixes and features we'd like to get out there.

DuebelWalter commented 2 years ago

I agree with you, the problem with Planning Center can probably be easily solved internally because as far as I can understand, the problem appeared only from the moment we created 3 services. The services before that are displayed correctly. So I delete the two unused services and then everything should be fine for us again.

berry120 commented 2 years ago

Closing this one off just because we've addressed a number of specific planning centre issues here, and we're not able to immediately reproduce any others. If there's another planning centre issue then feel free to create another issue and we'll track that separately 👍