বাস্তবায়ন টিপস

এই বিভাগে কিছু টিপস রয়েছে যা আপনাকে লাইব্রেরির আরও জটিল বাস্তবায়ন লিখতে সাহায্য করবে:

আপনার নিজের সার্ভলেট ব্যবহার করা

লাইব্রেরির DataSourceServlet ক্লাস থেকে উত্তরাধিকারসূত্রে পাওয়া সহজতম ডেটা উৎস বাস্তবায়ন। DataSourceServlet ব্যতীত অন্য একটি ক্লাস থেকে উত্তরাধিকারী হতে, একটি ডেটা উত্স নিম্নরূপ প্রয়োগ করুন:

  1. DataTableGenerator ইন্টারফেস প্রয়োগ করুন এবং getCapabilities() এবং generateDataTable() ওভাররাইড করুন।
  2. ডেটা সোর্স ফ্লো চালানোর জন্য আপনার সার্লেট কোডের মধ্যে থেকে DataSourceHelper.executeDataSourceServletFlow() এ কল করুন। এই পদ্ধতি নিম্নলিখিত পরামিতি লাগে:
    • একটি HttpServletRequest অবজেক্ট।
    • একটি HttpServletResponse অবজেক্ট।
    • উপরের ধাপ 1 থেকে DataTableGenerator ইন্টারফেসের আপনার বাস্তবায়ন।
    • সীমাবদ্ধ বা অনিয়ন্ত্রিত অ্যাক্সেস মোড নির্দিষ্ট করার জন্য একটি বুলিয়ান।

উদাহরণ স্বরূপ, আপনি যদি AuthServlet নামক অন্য AuthServlet ক্লাস থেকে উত্তরাধিকার সূত্রে পেতে চান যা অন্তর্নির্মিত প্রমাণীকরণ প্রদান করে, তাহলে আপনি DataSourceServlet এর পরিবর্তে AuthServlet এর উত্তরাধিকারী করার জন্য SimpleServletExample পুনরায় লিখতে পারেন:

  1. DataTableGenerator ইন্টারফেস প্রয়োগ করুন।
  2. generateDataTable() আপনার DataSourceServlet বাস্তবায়ন থেকে আপনার DataTableGenerator বাস্তবায়নে সরান।
  3. Capabilities.None ফেরত দিতে আপনার DataTableGenerator বাস্তবায়নে getCapabilities() ওভাররাইড করুন। কোনটিই নয়।
  4. আপনার সার্লেট কোড ( doGet() বা doPost() ) থেকে DataSourceHelper.executeDataSourceServletFlow( DataSourceHelper.executeDataSourceServletFlow() কে কল করুন এবং আপনার DataTableGenerator বাস্তবায়ন পাস করুন। এই পদ্ধতিটি ডাটাসোর্সের পুরো প্রবাহ চালায়, যার মধ্যে ডাটা সোর্সের ফলাফল সার্লেট রেসপন্সে রেন্ডার করা হয়।

আপনি একই কৌশল ব্যবহার করতে পারেন যদি আপনি একটি servlet ফ্রেমওয়ার্ক ব্যবহার করেন যেখানে আপনি সাধারণত ফ্রেমওয়ার্ক দ্বারা প্রদত্ত একটি বিমূর্ত শ্রেণির উত্তরাধিকারী হন। উদাহরণস্বরূপ, আপনি যদি WebWork ব্যবহার করেন তবে আপনি ActionSupport ক্লাস উত্তরাধিকারী হতে চাইতে পারেন।

ক্ষমতা সংজ্ঞায়িত করা

যদি আপনার ডেটা স্টোরে প্রচুর পরিমাণে ডেটা থাকে এবং আপনি আপনার ডেটা উত্সের দক্ষতা বাড়াতে চান তবে আপনি আপনার ডেটা স্টোরের অনুসন্ধান ক্ষমতাগুলি ব্যবহার করতে পারেন। উদাহরণস্বরূপ, ধরুন আপনার ডেটা স্টোর একটি ডাটাবেস এবং ডাটাবেসে প্রচুর সংখ্যক কলাম রয়েছে। যদি একটি ভিজ্যুয়ালাইজেশন শুধুমাত্র কয়েকটি কলামের জন্য অনুরোধ করে, তাহলে ডাটাবেসের মধ্যে একটি SELECT অপারেশন চালানো সমস্ত কলাম পুনরুদ্ধার করার চেয়ে এবং SELECT সম্পাদন করতে লাইব্রেরির অনুসন্ধান ক্ষমতা ব্যবহার করার চেয়ে বেশি কার্যকর। SELECT ক্ষমতা প্রয়োগ করতে, আপনি ডাটাবেসের মধ্যে একটি SELECT অপারেশন চালানোর জন্য এবং একটি ডেটা টেবিল ফেরত দেওয়ার জন্য কোড লিখুন।

আপনার কোড প্রদান করে ক্যোয়ারী করার ক্ষমতা নির্ধারণ করতে Capabilities enum ব্যবহার করুন। উপলব্ধ বিকল্পগুলি হল:

  • NONE : ডিফল্ট, আপনার কোড কোন ক্যোয়ারী অপারেশন প্রদান করে না।
  • SQL : আপনার কোড SQL কোয়েরি অপারেশন প্রদান করে।
  • SORT_AND_PAGINATION : আপনার কোড বাছাই এবং পেজিনেশন কোয়েরি অপারেশন উভয়ই প্রদান করে।
  • SELECT : আপনার কোড একটি নির্বাচন অপারেশন প্রদান করে।
  • ALL : আপনার কোড SQL , SORT_AND_PAGINATION এবং SELECT অপারেশন প্রদান করে।

দ্রষ্টব্য : সমস্ত ক্ষেত্রেই লাইব্রেরি আপনার কোড দ্বারা প্রদত্ত নয় এমন কোনো কোয়েরি অপারেশন পরিচালনা করে।

NONE ব্যতীত অন্য কোনো ক্ষমতা বাস্তবায়ন করতে, Capabilities.getCapabilities() ওভাররাইড করুন এবং DataTable.generateDataTable() ডেটা সঞ্চয় অনুসন্ধান করতে এবং একটি ডেটা টেবিল ফেরত দেওয়ার জন্য প্রয়োগ করুন।

তিনটি উদাহরণ ব্যাখ্যা করে কিভাবে ক্ষমতাগুলি বাস্তবায়ন করতে হয়: AdvancedExampleServlet , AdvancedExampleServlet2 , এবং SqlDataSourceServlet । সব example প্যাকেজ আছে. AdvancedExampleServlet2 কে ক্ষমতা এবং ঘটনা প্রবাহের সংজ্ঞায় আলোচনা করা হয়েছে।

ঘটনা প্রবাহ কাস্টমাইজ করা

ইভেন্টের ডিফল্ট প্রবাহ DataSourceHelper.executeDataSourceServletFlow এ সংজ্ঞায়িত করা হয়েছে। ডিফল্ট প্রবাহ নিম্নরূপ:

  1. ক্যোয়ারী প্যারামিটার এক্সট্র্যাক্ট এবং পার্স করুন।
  2. শুধুমাত্র সীমাবদ্ধ অ্যাক্সেস মোডের জন্য, যাচাই করুন যে অনুরোধটি সার্লেটের মতো একই ডোমেন থেকে এসেছে।
  3. দুটি কোয়েরি অবজেক্ট তৈরি করার অনুরোধটি পার্স করুন: ডেটা সোর্স কোয়েরি এবং সমাপ্তি কোয়েরি। আপনার generateDataTable() বাস্তবায়নে ডেটা উৎসের প্রশ্নটি পাস করুন।
  4. generateDataTable() এর আপনার বাস্তবায়ন একটি ডেটা টেবিল তৈরি করে।
  5. ধাপ 5 এ উত্পন্ন ডেটা টেবিলে সমাপ্তির প্রশ্নটি চালান।
  6. ভিজ্যুয়ালাইজেশন দ্বারা নির্দিষ্ট বিন্যাসে ডেটা টেবিল রেন্ডার করুন এবং সার্লেট প্রতিক্রিয়া সেট করুন।

আপনার নিজস্ব ইভেন্টের প্রবাহ নির্দিষ্ট করতে, datasource.DataSourceHelper এ সহায়ক ফাংশনগুলিকে কল করুন। একটি উদাহরণ বাস্তবায়নের জন্য সক্ষমতা এবং ঘটনা প্রবাহের সংজ্ঞা দেখুন।

DataTableGenerator.generateDataTable এ প্যারামিটার পাস করা

আপনি HttpServletRequest.setAttribute ব্যবহার করতে পারেন এমন ডেটা পাস করতে যা কোনো প্রশ্নের অংশ নয় বা DataTableGenerator.generateDataTable HttpServletRequest অবজেক্ট। উদাহরণ কোড নীচে প্রদান করা হয়.

আপনার servlet এর কোডে, আপনি HttpServletRequest এ যে অবজেক্টটি পাস করতে চান তা নিম্নরূপ রাখুন:

request.setAttribute("my_object_name", myObject);
DataSourceHelper.executeDataSourceServletFlow(request, response, dataTableGenerator);

আপনার dataTableGenerator ইন্টারফেস বাস্তবায়নে, HttpServletRequest থেকে নিম্নরূপ বস্তুটি পান:

public DataTable generateDataTable(Query query, HttpServletRequest request){
  Object myObject = request.getAttribute("my_object_name"); 
  // Add your code to manipulate myObject here 
} 

একটি নন-সার্ভলেট ডেটা উত্স বাস্তবায়ন করা

আপনি যদি সার্লেট ব্যবহার না করেই লাইব্রেরি বাস্তবায়ন করেন, আপনি শুধুমাত্র সেই ক্লাস এবং সহায়ক ফাংশনগুলি ব্যবহার করতে পারেন যেগুলির জন্য সার্লেট পরিবেশের প্রয়োজন হয় না। এর মধ্যে রয়েছে Query এবং DataTable ক্লাস এবং কিছু DataSourceHelper ফাংশন যেমন parseQuery , applyQuery , validateQuery এবং splitQuery । আপনি নিম্নলিখিত কাজ করতে এই ক্লাস এবং ফাংশন ব্যবহার করতে পারেন:

  • একটি ভিজ্যুয়ালাইজেশন ক্যোয়ারী পার্স করুন।
  • একটি ডেটা উৎস ক্যোয়ারী এবং একটি সমাপ্তি ক্যোয়ারী বিভক্ত করুন.
  • একটি ডেটা টেবিল তৈরি করতে সমাপ্তির প্রশ্নটি চালান।
  • HTML , CSV , বা JSON ফর্ম্যাটে ভিজ্যুয়ালাইজেশনে ডেটা টেবিলটি ফিরিয়ে দিন৷