JAVAライブラリーpadeg-habrへの新年の贈り物

はい、これは同じpadeg.dllライブラリですが、javaが存在するすべての場所で機能します。 著者Sergey V. Plahov別名SeerおよびGennady Pokatashkin

実際、話は簡単です。 それは2007年に始まりました。そのとき、ある企業プロジェクトの名前と地位を急ぐ必要がありました。 原則として、この機能は顧客の要件にはありませんでしたが、「バン」が必要であり、自動偏角はバンの1つにすぎませんでした。

すぐにライブラリの作成者の1人に連絡を取り、少量を転送した後、Delphiのソースコードを受け取り、それをJAVAに移植しました。 javaとdelphiの最初のアイデアによれば、ソースはできる限り近くあるべきだったので、その後、並列編集を行うことができました。 この方法で行われました:ソースコードはデルファイで取得され、pas→java拡張が変更され、プロジェクトに追加されました。 次は構文の編集です。 しかし、実際には、デルファイコードは主にマルチストーリーifと内部プロシージャで構成され、グローバル変数を含み、マルチスレッド作業に適合していなかったため、強くリファクタリングする必要がありました。

ライブラリは移植されているかもしれません。 著作権について尋ねられたとき、私は結果に対して何でもすることが許されましたが、デルファイライブラリはシェアウェアの条件の下で配布されたので、私はJavaポートを公開しませんでした。

それから5年が経ちましたが、国内のJava開発者が使用できるツールを使用するだけで十分だと思います。 さらに、鼻の上のお祝い。 したがってダウンロード



技術情報



ライブラリはjava 1.5と互換性がありますが、原則として、以前のバージョンのjavaでポートを作成することを妨げるものはありません。 コレクションの型付けを削除するだけでよく、マルチスレッドを少しいじります(揮発性変数は例外辞書の処理に使用されました)。

このAPIは、padeg.dll APIと可能な限り類似しています。

ライブラリに含まれるリソースのエンコードはwindows-1251です(元のライブラリとの互換性のため)。 外部例外ファイルを接続する必要がある場合は、windows-1251エンコーディングでもある必要があります。 たとえば、データベーステーブルからイテレータを使用して例外をロードすることもできます(
Iterator<String>
      
      





テストアプリケーションはOpenShiftで表示できます。 ライブラリ自体も同じ場所にあります(haberstoreは写真のみを受け入れるため、テストアプリケーションのリソースから直接ライブラリをロードする必要があります)。

テストアプリケーションのソースコード
 import java.io.Serializable; import java.util.ArrayList; import java.util.List; import javax.faces.bean.ManagedBean; import javax.faces.model.SelectItem; import padeg.lib.Padeg; @ManagedBean public class PadegBean implements Serializable { private static final long serialVersionUID = 1L; public class ResultItem implements Serializable { private static final long serialVersionUID = 1L; private int padeg; private String fio; private String appointment; private String office; public int getPadeg() { return padeg; } public String getFio() { return fio; } public String getAppointment() { return appointment; } public String getOffice() { return office; } } public PadegBean() { } private String lastName = ""; private String firstName = ""; private String middleName; private String appointment = "  "; private String office = "        "; private String sexStr = "true"; private static final SelectItem[] sexItems = { new SelectItem("true",""), new SelectItem("false",""), new SelectItem("auto","  ") }; private List<ResultItem> resultItems; public String getLastName() { return lastName; } public void setLastName(String lastName) { this.lastName = lastName; } public String getFirstName() { return firstName; } public void setFirstName(String firstName) { this.firstName = firstName; } public String getMiddleName() { return middleName; } public void setMiddleName(String middleName) { this.middleName = middleName; } public String getAppointment() { return appointment; } public void setAppointment(String appointment) { this.appointment = appointment; } public String getOffice() { return office; } public void setOffice(String office) { this.office = office; } public String getSexStr() { return sexStr; } public void setSexStr(String sexStr) { this.sexStr = sexStr; } public SelectItem[] getSexItems() { return sexItems; } public List<ResultItem> getResultItems() { if (resultItems == null) { declAll(); } return resultItems; } public void declAll() { resultItems = new ArrayList<PadegBean.ResultItem>(); for (int i=1;i<=6;i++) { ResultItem item = new ResultItem(); item.padeg = i; resultItems.add(item); try { if ("auto".equals(sexStr)) { item.fio = Padeg.getFIOPadegAS(lastName, firstName, middleName, i); } else { boolean sex = Boolean.parseBoolean(sexStr); item.fio = Padeg.getFIOPadeg(lastName, firstName, middleName, sex, i); } } catch (Exception e) { item.fio = e.getMessage(); } try { //item.appointment = Padeg.getFullAppointmentPadeg(appointment, office, i); item.appointment = Padeg.getAppointmentPadeg(appointment, i); } catch (Exception e) { item.appointment = e.getMessage(); } try { item.office = Padeg.getOfficePadeg(office, i); } catch (Exception e) { item.office = e.getMessage(); } } } }
      
      







UPD: 元のpadeg.dllライブラリへのリンク



All Articles