Re: How to copy an HSSFSheet into another HSSFSheet which belongs to a different HSSFWorkbook.
Dan S <[email protected]> Tue, 13 May 2025 10:40:43 -0400
| Newsgroups | gmane.comp.jakarta.poi.user |
|---|---|
| Message-ID | <CANeOZMRN3ivC+avdTxvjPToG2Ckv5WvTDsJy+9adnh-yBAg0gQ@mail.gmail.com> |
--0000000000008547560635056bed Content-Type: multipart/alternative; boundary="0000000000008547550635056beb" --0000000000008547550635056beb Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable PJ, I am trying to use the copyRows as you suggested but I am hitting some exceptions regarding formulas even though my data has no formulas. I took a unit test of mine in which I was testing the bug I reported in https://bz.apache.org/bugzilla/show_bug.cgi?id=3D69583 and refitted it with an HSSFWorkbook along with my code which creates a new Workbook from each Sheet of an existing Workbook. The unit code test is included as an attachment. The stacktrace I get is: [main] WARN org.apache.poi.POIDocument - DocumentSummaryInformation property set came back as null [main] WARN org.apache.poi.POIDocument - SummaryInformation property set came back as null java.lang.IllegalStateException: Cannot get a FORMULA value from a STRING formula cell at org.apache.poi.hssf.usermodel.HSSFCell.typeMismatch(HSSFCell.java:648) at org.apache.poi.hssf.usermodel.HSSFCell.getCellFormula(HSSFCell.java:640) at org.apache.poi.hssf.usermodel.helpers.HSSFRowColShifter.updateRowFormulas(H= SSFRowColShifter.java:74) at org.apache.poi.hssf.usermodel.helpers.HSSFRowShifter.updateRowFormulas(HSSF= RowShifter.java:71) at org.apache.poi.hssf.usermodel.HSSFRow.copyRowFrom(HSSFRow.java:853) at org.apache.nifi.excel.TestHSSFRowCopyRowFrom.test(TestHSSFRowCopyRowFrom.ja= va:74) at java.base/java.lang.reflect.Method.invoke(Method.java:580) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) at java.base/java.util.ArrayList.forEach(ArrayList.java:1596) On Mon, May 12, 2025 at 6:32=E2=80=AFPM Dan S <[email protected]> wrote: > PJ, > Thank you! That is very helpful and aligns very well with the XSSFSheet > copyRows method in regards to use of CellCopyPolicy and CellCopyContext. > > On Mon, May 12, 2025 at 5:49=E2=80=AFPM PJ Fanning <[email protected]>= wrote: > >> There is copyRowFrom in HSSFRow. >> >> >> https://poi.apache.org/apidocs/dev/org/apache/poi/hssf/usermodel/HSSFRow= .html#copyRowFrom-org.apache.poi.ss.usermodel.Row-org.apache.poi.ss.usermod= el.CellCopyPolicy-org.apache.poi.ss.usermodel.CellCopyContext- >> >> On Mon, 12 May 2025 at 21:54, Dan S <[email protected]> wrote: >> > >> > XSSFSheet has a copyRows method which allows for copying the contents = of >> > one XSSFSheet to another one. I do not see an equivalent method for an >> > HSSFSheet. I see from this post >> > < >> https://lists.apache.org/[email protected]:dfr=3D2020-1-1|dto=3D2= 025-5-12:HSSFSheet%20copy >> <https://lists.apache.org/[email protected]:dfr=3D2020-1-1%7Cdto= =3D2025-5-12:HSSFSheet%20copy> >> > >> > a solution which allows copying for HSSFSheet and XSSFSheet. I just >> want to >> > make sure if that is a recommended way for HSSF and if not has there >> been >> > any change to POI that provides methods for this? >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: [email protected] >> For additional commands, e-mail: [email protected] >> >> --0000000000008547550635056beb Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable <div dir=3D"ltr">PJ,<div>=C2=A0I am trying to use the copyRows as you sugge= sted but I am hitting some exceptions regarding formulas even though my dat= a has no formulas. I took a unit test of mine in which I was testing the bu= g I reported in=C2=A0<a href=3D"https://bz.apache.org/bugzilla/show_bug.cgi= ?id=3D69583">https://bz.apache.org/bugzilla/show_bug.cgi?id=3D69583</a>=C2= =A0and refitted it with an HSSFWorkbook along with my code which creates a = new Workbook from each Sheet of an existing Workbook. The unit code test is= included as an attachment. The stacktrace=C2=A0I get is:</div><div><br></d= iv><div><font face=3D"monospace">[main] WARN org.apache.poi.POIDocument - D= ocumentSummaryInformation property set came back as null<br>[main] WARN org= .apache.poi.POIDocument - SummaryInformation property set came back as null= <br><br>java.lang.IllegalStateException: Cannot get a FORMULA value from a = STRING formula cell<br><br> at org.apache.poi.hssf.usermodel.HSSFCell.typeM= ismatch(HSSFCell.java:648)<br> at org.apache.poi.hssf.usermodel.HSSFCell.ge= tCellFormula(HSSFCell.java:640)<br> at org.apache.poi.hssf.usermodel.helper= s.HSSFRowColShifter.updateRowFormulas(HSSFRowColShifter.java:74)<br> at org= .apache.poi.hssf.usermodel.helpers.HSSFRowShifter.updateRowFormulas(HSSFRow= Shifter.java:71)<br> at org.apache.poi.hssf.usermodel.HSSFRow.copyRowFrom(H= SSFRow.java:853)<br> at org.apache.nifi.excel.TestHSSFRowCopyRowFrom.test(T= estHSSFRowCopyRowFrom.java:74)<br> at java.base/java.lang.reflect.Method.in= voke(Method.java:580)<br> at java.base/java.util.ArrayList.forEach(ArrayLis= t.java:1596)</font><br><font face=3D"monospace"> at java.base/java.util.Arr= ayList.forEach(ArrayList.java:1596)</font><br></div><div><br></div><div><br= ></div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"gmail= _attr">On Mon, May 12, 2025 at 6:32=E2=80=AFPM Dan S <<a href=3D"mailto:= [email protected]" target=3D"_blank">[email protected]</a>> wrote:<br></= div><blockquote class=3D"gmail_quote" style=3D"margin:0px 0px 0px 0.8ex;bor= der-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir=3D"ltr">PJ,= =C2=A0<div>Thank you! That is very helpful and aligns very well with the XS= SFSheet copyRows method in regards to use of CellCopyPolicy and CellCopyCon= text.</div></div><br><div class=3D"gmail_quote"><div dir=3D"ltr" class=3D"g= mail_attr">On Mon, May 12, 2025 at 5:49=E2=80=AFPM PJ Fanning <<a href= =3D"mailto:[email protected]" target=3D"_blank">[email protected]</a>= > wrote:<br></div><blockquote class=3D"gmail_quote" style=3D"margin:0px = 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Ther= e is copyRowFrom in HSSFRow.<br> <br> <a href=3D"https://poi.apache.org/apidocs/dev/org/apache/poi/hssf/usermodel= /HSSFRow.html#copyRowFrom-org.apache.poi.ss.usermodel.Row-org.apache.poi.ss= .usermodel.CellCopyPolicy-org.apache.poi.ss.usermodel.CellCopyContext-" rel= =3D"noreferrer" target=3D"_blank">https://poi.apache.org/apidocs/dev/org/ap= ache/poi/hssf/usermodel/HSSFRow.html#copyRowFrom-org.apache.poi.ss.usermode= l.Row-org.apache.poi.ss.usermodel.CellCopyPolicy-org.apache.poi.ss.usermode= l.CellCopyContext-</a><br> <br> On Mon, 12 May 2025 at 21:54, Dan S <<a href=3D"mailto:[email protected]= " target=3D"_blank">[email protected]</a>> wrote:<br> ><br> > XSSFSheet has a copyRows method which allows for copying the contents = of<br> > one XSSFSheet to another one. I do not see an equivalent method for an= <br> > HSSFSheet. I see from this post<br> > <<a href=3D"https://lists.apache.org/[email protected]:dfr= =3D2020-1-1%7Cdto=3D2025-5-12:HSSFSheet%20copy" rel=3D"noreferrer" target= =3D"_blank">https://lists.apache.org/[email protected]:dfr=3D2020-1-= 1|dto=3D2025-5-12:HSSFSheet%20copy</a>><br> > a solution which allows copying for HSSFSheet and XSSFSheet. I just wa= nt to<br> > make sure if that is a recommended way for HSSF and if not has there b= een<br> > any change to POI that provides methods for this?<br> <br> ---------------------------------------------------------------------<br> To unsubscribe, e-mail: <a href=3D"mailto:[email protected]" = target=3D"_blank">[email protected]</a><br> For additional commands, e-mail: <a href=3D"mailto:[email protected]= " target=3D"_blank">[email protected]</a><br> <br> </blockquote></div> </blockquote></div> --0000000000008547550635056beb-- --0000000000008547560635056bed Content-Type: text/x-java; charset="US-ASCII"; name="TestHSSFRowCopyRowFrom.java" Content-Disposition: attachment; filename="TestHSSFRowCopyRowFrom.java" Content-Transfer-Encoding: base64 Content-ID: <f_mamm6bqk0> X-Attachment-Id: f_mamm6bqk0 aW1wb3J0IG9yZy5hcGFjaGUucG9pLmhzc2YudXNlcm1vZGVsLkhTU0ZSb3c7CmltcG9ydCBvcmcu YXBhY2hlLnBvaS5oc3NmLnVzZXJtb2RlbC5IU1NGU2hlZXQ7CmltcG9ydCBvcmcuYXBhY2hlLnBv aS5oc3NmLnVzZXJtb2RlbC5IU1NGV29ya2Jvb2s7CmltcG9ydCBvcmcuYXBhY2hlLnBvaS5zcy51 c2VybW9kZWwuQ2VsbDsKaW1wb3J0IG9yZy5hcGFjaGUucG9pLnNzLnVzZXJtb2RlbC5DZWxsQ29w eUNvbnRleHQ7CmltcG9ydCBvcmcuYXBhY2hlLnBvaS5zcy51c2VybW9kZWwuQ2VsbENvcHlQb2xp Y3k7CmltcG9ydCBvcmcuYXBhY2hlLnBvaS5zcy51c2VybW9kZWwuQ2VsbFN0eWxlOwppbXBvcnQg b3JnLmFwYWNoZS5wb2kuc3MudXNlcm1vZGVsLkNyZWF0aW9uSGVscGVyOwppbXBvcnQgb3JnLmFw YWNoZS5wb2kuc3MudXNlcm1vZGVsLkRhdGVVdGlsOwppbXBvcnQgb3JnLmFwYWNoZS5wb2kuc3Mu dXNlcm1vZGVsLlJvdzsKaW1wb3J0IG9yZy5hcGFjaGUucG9pLnNzLnVzZXJtb2RlbC5TaGVldDsK aW1wb3J0IG9yZy5hcGFjaGUucG9pLnNzLnVzZXJtb2RlbC5Xb3JrYm9vazsKaW1wb3J0IG9yZy5q dW5pdC5qdXBpdGVyLmFwaS5UZXN0OwoKaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJl YW07CmltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbTsKaW1wb3J0IGphdmEuaW8u SU9FeGNlcHRpb247CmltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKaW1wb3J0IGphdmEubmlv LmZpbGUuRmlsZXM7CmltcG9ydCBqYXZhLm5pby5maWxlLlBhdGhzOwppbXBvcnQgamF2YS50aW1l LkxvY2FsRGF0ZVRpbWU7CmltcG9ydCBqYXZhLnRpbWUuTG9jYWxUaW1lOwppbXBvcnQgamF2YS50 aW1lLmZvcm1hdC5EYXRlVGltZUZvcm1hdHRlcjsKaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsK CnB1YmxpYyBjbGFzcyBUZXN0SFNTRlJvd0NvcHlSb3dGcm9tIHsKICAgIEBUZXN0CiAgICB2b2lk IHRlc3QoKSB0aHJvd3MgSU9FeGNlcHRpb24gewogICAgICAgIENlbGxDb3B5UG9saWN5IGNlbGxD b3B5UG9saWN5ID0gbmV3IENlbGxDb3B5UG9saWN5LkJ1aWxkZXIoKQogICAgICAgICAgICAgICAg LmNlbGxGb3JtdWxhKGZhbHNlKSAvLyBOT1RFOiBzZXR0aW5nIHRvIGZhbHNlIGFsbG93cyBmb3Ig Y29weWluZyB0aGUgZXZhbHVhdGVkIGZvcm11bGEgdmFsdWUuCiAgICAgICAgICAgICAgICAuY2Vs bFN0eWxlKENlbGxDb3B5UG9saWN5LkRFRkFVTFRfQ09QWV9DRUxMX1NUWUxFX1BPTElDWSkKICAg ICAgICAgICAgICAgIC5jZWxsVmFsdWUoQ2VsbENvcHlQb2xpY3kuREVGQVVMVF9DT1BZX0NFTExf VkFMVUVfUE9MSUNZKQogICAgICAgICAgICAgICAgLmNvbmRlbnNlUm93cyhDZWxsQ29weVBvbGlj eS5ERUZBVUxUX0NPTkRFTlNFX1JPV1NfUE9MSUNZKQogICAgICAgICAgICAgICAgLmNvcHlIeXBl cmxpbmsoQ2VsbENvcHlQb2xpY3kuREVGQVVMVF9DT1BZX0hZUEVSTElOS19QT0xJQ1kpCiAgICAg ICAgICAgICAgICAubWVyZ2VIeXBlcmxpbmsoQ2VsbENvcHlQb2xpY3kuREVGQVVMVF9NRVJHRV9I WVBFUkxJTktfUE9MSUNZKQogICAgICAgICAgICAgICAgLm1lcmdlZFJlZ2lvbnMoQ2VsbENvcHlQ b2xpY3kuREVGQVVMVF9DT1BZX01FUkdFRF9SRUdJT05TX1BPTElDWSkKICAgICAgICAgICAgICAg IC5yb3dIZWlnaHQoQ2VsbENvcHlQb2xpY3kuREVGQVVMVF9DT1BZX1JPV19IRUlHSFRfUE9MSUNZ KQogICAgICAgICAgICAgICAgLmJ1aWxkKCk7CgogICAgICAgIGZpbmFsIExvY2FsRGF0ZVRpbWUg bG9jYWxEYXRlVGltZSA9IExvY2FsRGF0ZVRpbWUub2YoMjAyMywgMSwgMSwgMCwgMCwgMCk7CiAg ICAgICAgZmluYWwgTG9jYWxEYXRlVGltZSBub25WYWxpZEV4Y2VsRGF0ZSA9IExvY2FsRGF0ZVRp bWUub2YoMTg5OSwgMTIsIDMxLCAwLCAwLCAwKTsKICAgICAgICBmaW5hbCBPYmplY3RbXVtdIGRh dGEgPSB7CiAgICAgICAgICAgICAgICB7InRyYW5zYWN0aW9uX2lkIiwgInRyYW5zYWN0aW9uX2Rh dGUiLCAidHJhbnNhY3Rpb25fdGltZSJ9LAogICAgICAgICAgICAgICAgezc1LCBsb2NhbERhdGVU aW1lLCBub25WYWxpZEV4Y2VsRGF0ZS5wbHVzSG91cnMoOSkucGx1c01pbnV0ZXMoNTMpLnBsdXNT ZWNvbmRzKDQ0KS50b0xvY2FsVGltZSgpfSwKICAgICAgICAgICAgICAgIHs3OCwgbG9jYWxEYXRl VGltZSwgbm9uVmFsaWRFeGNlbERhdGUucGx1c0hvdXJzKDkpLnBsdXNNaW51dGVzKDU1KS5wbHVz U2Vjb25kcygxNikudG9Mb2NhbFRpbWUoKX0KICAgICAgICB9OwoKICAgICAgICBmaW5hbCBCeXRl QXJyYXlPdXRwdXRTdHJlYW0gd29ya2Jvb2tPdXRwdXRTdHJlYW0gPSBuZXcgQnl0ZUFycmF5T3V0 cHV0U3RyZWFtKCk7CiAgICAgICAgdHJ5IChXb3JrYm9vayB3b3JrYm9vayA9IG5ldyBIU1NGV29y a2Jvb2soKSkgewogICAgICAgICAgICBmaW5hbCBTaGVldCBzaGVldCA9IHdvcmtib29rLmNyZWF0 ZVNoZWV0KCJTb21lU2hlZXROYW1lIik7CiAgICAgICAgICAgIHBvcHVsYXRlU2hlZXQoc2hlZXQs IGRhdGEpOwogICAgICAgICAgICBzZXRDZWxsU3R5bGVzKHNoZWV0LCB3b3JrYm9vayk7CiAgICAg ICAgICAgIHdvcmtib29rLndyaXRlKHdvcmtib29rT3V0cHV0U3RyZWFtKTsKICAgICAgICB9Cgog ICAgICAgIHRyeSB7CiAgICAgICAgICAgIGZpbmFsIEhTU0ZXb3JrYm9vayBvcmlnaW5hbFdvcmti b29rID0gbmV3IEhTU0ZXb3JrYm9vayhuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0od29ya2Jvb2tP dXRwdXRTdHJlYW0udG9CeXRlQXJyYXkoKSkpOwogICAgICAgICAgICBmaW5hbCBJdGVyYXRvcjxT aGVldD4gb3JpZ2luYWxTaGVldHNJdGVyYXRvciA9IG9yaWdpbmFsV29ya2Jvb2suc2hlZXRJdGVy YXRvcigpOwogICAgICAgICAgICBmaW5hbCBDZWxsQ29weUNvbnRleHQgY2VsbENvcHlDb250ZXh0 ID0gbmV3IENlbGxDb3B5Q29udGV4dCgpOwoKICAgICAgICAgICAgaW50IGluZGV4ID0gMDsKICAg ICAgICAgICAgd2hpbGUgKG9yaWdpbmFsU2hlZXRzSXRlcmF0b3IuaGFzTmV4dCgpKSB7CiAgICAg ICAgICAgICAgICBmaW5hbCBIU1NGU2hlZXQgb3JpZ2luYWxTaGVldCA9IChIU1NGU2hlZXQpIG9y aWdpbmFsU2hlZXRzSXRlcmF0b3IubmV4dCgpOwogICAgICAgICAgICAgICAgZmluYWwgU3RyaW5n IG9yaWdpbmFsU2hlZXROYW1lID0gb3JpZ2luYWxTaGVldC5nZXRTaGVldE5hbWUoKTsKICAgICAg ICAgICAgICAgIGZpbmFsIEl0ZXJhdG9yPFJvdz4gb3JpZ2luYWxSb3dzSXRlcmF0b3IgPSBvcmln aW5hbFNoZWV0LnJvd0l0ZXJhdG9yKCk7CgogICAgICAgICAgICAgICAgdHJ5IChIU1NGV29ya2Jv b2sgbmV3V29ya2Jvb2sgPSBuZXcgSFNTRldvcmtib29rKCkpIHsKICAgICAgICAgICAgICAgICAg ICBmaW5hbCBIU1NGU2hlZXQgbmV3U2hlZXQgPSBuZXdXb3JrYm9vay5jcmVhdGVTaGVldChvcmln aW5hbFNoZWV0TmFtZSk7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKG9yaWdpbmFsUm93c0l0 ZXJhdG9yLmhhc05leHQoKSkgewogICAgICAgICAgICAgICAgICAgICAgICBIU1NGUm93IG9yaWdp bmFsUm93ID0gKEhTU0ZSb3cpIG9yaWdpbmFsUm93c0l0ZXJhdG9yLm5leHQoKTsKICAgICAgICAg ICAgICAgICAgICAgICAgSFNTRlJvdyBuZXdSb3cgPSBuZXdTaGVldC5jcmVhdGVSb3cob3JpZ2lu YWxSb3cuZ2V0Um93TnVtKCkpOwogICAgICAgICAgICAgICAgICAgICAgICBuZXdSb3cuY29weVJv d0Zyb20ob3JpZ2luYWxSb3csIGNlbGxDb3B5UG9saWN5LCBjZWxsQ29weUNvbnRleHQpOwogICAg ICAgICAgICAgICAgICAgIH0KCiAgICAgICAgICAgICAgICAgICAgdHJ5IChmaW5hbCBPdXRwdXRT dHJlYW0gb3V0ID0gRmlsZXMubmV3T3V0cHV0U3RyZWFtKFBhdGhzLmdldChTdHJpbmcuZm9ybWF0 KCJ0YXJnZXQvc2hlZXQtJXMueGxzIiwgaW5kZXgpKSkpIHsKICAgICAgICAgICAgICAgICAgICAg ICAgbmV3V29ya2Jvb2sud3JpdGUob3V0KTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICAgICB9CiAgICAgICAgICAgICAgICBpbmRleCsrOwogICAgICAgICAgICB9CgogICAgICAg IH0gY2F0Y2ggKGZpbmFsIElPRXhjZXB0aW9uIGUpIHsKICAgICAgICAgICAgdGhyb3cgbmV3IFJ1 bnRpbWVFeGNlcHRpb24oIkZhaWxlZCB0byBzcGxpdCBYTFMgZmlsZSIsIGUpOwogICAgICAgIH0K ICAgIH0KCiAgICBwcml2YXRlIHN0YXRpYyB2b2lkIHBvcHVsYXRlU2hlZXQoU2hlZXQgc2hlZXQs IE9iamVjdFtdW10gZGF0YSkgewogICAgICAgIGludCByb3dDb3VudCA9IDA7CiAgICAgICAgZm9y IChPYmplY3RbXSBkYXRhUm93IDogZGF0YSkgewogICAgICAgICAgICBSb3cgcm93ID0gc2hlZXQu Y3JlYXRlUm93KHJvd0NvdW50KyspOwogICAgICAgICAgICBpbnQgY29sdW1uQ291bnQgPSAwOwoK ICAgICAgICAgICAgZm9yIChPYmplY3QgZmllbGQgOiBkYXRhUm93KSB7CiAgICAgICAgICAgICAg ICBDZWxsIGNlbGwgPSByb3cuY3JlYXRlQ2VsbChjb2x1bW5Db3VudCsrKTsKICAgICAgICAgICAg ICAgIHN3aXRjaCAoZmllbGQpIHsKICAgICAgICAgICAgICAgICAgICBjYXNlIFN0cmluZyBzdHJp bmcgLT4gY2VsbC5zZXRDZWxsVmFsdWUoc3RyaW5nKTsKICAgICAgICAgICAgICAgICAgICBjYXNl IEludGVnZXIgaW50ZWdlciAtPiBjZWxsLnNldENlbGxWYWx1ZShpbnRlZ2VyLmRvdWJsZVZhbHVl KCkpOwogICAgICAgICAgICAgICAgICAgIGNhc2UgTG9uZyBsIC0+IGNlbGwuc2V0Q2VsbFZhbHVl KGwuZG91YmxlVmFsdWUoKSk7CiAgICAgICAgICAgICAgICAgICAgY2FzZSBMb2NhbERhdGVUaW1l IGxvY2FsRGF0ZVRpbWUgLT4gY2VsbC5zZXRDZWxsVmFsdWUobG9jYWxEYXRlVGltZSk7CiAgICAg ICAgICAgICAgICAgICAgY2FzZSBMb2NhbFRpbWUgbG9jYWxUaW1lIC0+IGNlbGwuc2V0Q2VsbFZh bHVlKERhdGVVdGlsLmNvbnZlcnRUaW1lKERhdGVUaW1lRm9ybWF0dGVyLklTT19MT0NBTF9USU1F LmZvcm1hdChsb2NhbFRpbWUpKSk7CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCAtPiB7IH0K ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KCiAgICB2b2lk IHNldENlbGxTdHlsZXMoU2hlZXQgc2hlZXQsIFdvcmtib29rIHdvcmtib29rKSB7CiAgICAgICAg Q3JlYXRpb25IZWxwZXIgY3JlYXRpb25IZWxwZXIgPSB3b3JrYm9vay5nZXRDcmVhdGlvbkhlbHBl cigpOwogICAgICAgIENlbGxTdHlsZSBkYXlNb250aFllYXJDZWxsU3R5bGUgPSB3b3JrYm9vay5j cmVhdGVDZWxsU3R5bGUoKTsKICAgICAgICBkYXlNb250aFllYXJDZWxsU3R5bGUuc2V0RGF0YUZv cm1hdChjcmVhdGlvbkhlbHBlci5jcmVhdGVEYXRhRm9ybWF0KCkuZ2V0Rm9ybWF0KCJkZC9tbS95 eXl5IikpOwogICAgICAgIENlbGxTdHlsZSBob3VyTWludXRlU2Vjb25kID0gd29ya2Jvb2suY3Jl YXRlQ2VsbFN0eWxlKCk7CiAgICAgICAgaG91ck1pbnV0ZVNlY29uZC5zZXREYXRhRm9ybWF0KChz aG9ydCkgMjEpOyAvLyAyMSByZXByZXNlbnRzIGZvcm1hdCBoOm1tOnNzCiAgICAgICAgZm9yIChp bnQgcm93TnVtID0gc2hlZXQuZ2V0Rmlyc3RSb3dOdW0oKSArIDE7IHJvd051bSA8IHNoZWV0Lmdl dExhc3RSb3dOdW0oKSArIDE7IHJvd051bSsrKSB7CiAgICAgICAgICAgIFJvdyByb3cgPSBzaGVl dC5nZXRSb3cocm93TnVtKTsKICAgICAgICAgICAgcm93LmdldENlbGwoMSkuc2V0Q2VsbFN0eWxl KGRheU1vbnRoWWVhckNlbGxTdHlsZSk7CiAgICAgICAgICAgIHJvdy5nZXRDZWxsKDIpLnNldENl bGxTdHlsZShob3VyTWludXRlU2Vjb25kKTsKICAgICAgICB9CiAgICB9Cn0K --0000000000008547560635056bed Content-Type: text/plain; charset=us-ascii --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected] --0000000000008547560635056bed--