Spring Expression Language (SpEL)-এ Collection Selection এবং Projection অপারেটরগুলি ব্যবহার করে আপনার ডাটা সংগ্রহ থেকে নির্দিষ্ট উপাদান নির্বাচন করা এবং ম্যাপ করা সম্ভব হয়। এগুলি খুবই শক্তিশালী টুল যখন আপনি ডেটা ফিল্টার এবং ট্রান্সফর্মেশন করতে চান।
Collection Selection
Collection Selection অপারেটর ব্যবহার করে একটি Collection (যেমন, লিস্ট, সেট, ম্যাপ ইত্যাদি) থেকে নির্দিষ্ট উপাদান বা উপাদানগুলির নির্বাচন করা যায়। এটি একটি filtering অপারেশন হিসেবে কাজ করে এবং নির্দিষ্ট শর্ত পূর্ণ করলে কেবলমাত্র সেই উপাদানগুলো নির্বাচন করা হয়।
সেন্ট্যাক্স:
collection.?[condition]
এখানে:
- collection: যে কালেকশন থেকে উপাদান নির্বাচন করতে চান।
- condition: একটি শর্ত যা সত্য হলে উপাদানটি নির্বাচিত হবে।
উদাহরণ:
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6);
String expression = "#{numbers.?[T(java.lang.Integer).parseInt(#this.toString()) % 2 == 0]}";
List<Integer> evenNumbers = parser.parseExpression(expression).getValue(context, List.class);
System.out.println(evenNumbers); // Output: [2, 4, 6]
এখানে, numbers লিস্টে থেকে শুধুমাত্র even numbers নির্বাচন করা হয়েছে। T(java.lang.Integer).parseInt(#this.toString()) % 2 == 0 শর্তের মাধ্যমে শুধুমাত্র সেগুলি ফিল্টার করা হচ্ছে যেগুলি ২ দিয়ে ভাগযোগ্য।
Collection Projection
Projection অপারেটর ব্যবহার করে একটি Collection থেকে নির্দিষ্ট উপাদানের একটি নতুন প্রকল্প (projection) তৈরি করা যায়, অর্থাৎ আপনি যদি কলেকশনের কোনো অংশ পরিবর্তন বা ম্যাপ করতে চান, তবে সেটি করা সম্ভব হয়।
সেন্ট্যাক্স:
collection.![expression]
এখানে:
- collection: যে কালেকশন থেকে নতুন ভ্যালু নির্বাচন করবেন।
- expression: প্রতিটি উপাদানের উপর প্রয়োগ করা এক্সপ্রেশন, যার মাধ্যমে নতুন মান বা মানগুলো তৈরি হবে।
উদাহরণ:
List<Person> people = Arrays.asList(new Person("John", 25), new Person("Jane", 30), new Person("Joe", 22));
String expression = "#{people.![name]}";
List<String> names = parser.parseExpression(expression).getValue(context, List.class);
System.out.println(names); // Output: [John, Jane, Joe]
এখানে, Projection অপারেটরের মাধ্যমে people লিস্টের প্রতিটি Person অবজেক্ট থেকে শুধু name প্রপার্টি নির্বাচন করা হয়েছে।
আরও একটি উদাহরণ:
String expression = "#{people.![age + 5]}";
List<Integer> projectedAges = parser.parseExpression(expression).getValue(context, List.class);
System.out.println(projectedAges); // Output: [30, 35, 27]
এখানে, age + 5 এক্সপ্রেশন ব্যবহার করে age প্রপার্টির উপর ৫ যোগ করা হয়েছে।
Collection Selection এবং Projection এর মধ্যে পার্থক্য
- Collection Selection একটি শর্তের ভিত্তিতে উপাদান নির্বাচন করে, অর্থাৎ এটি শুধুমাত্র সেই উপাদানগুলোকে ফিরিয়ে দেয় যেগুলি শর্ত পূর্ণ করে।
- Projection একটি নতুন মান বা পরিবর্তিত মানের কালেকশন তৈরি করে, যা মূল উপাদানগুলো পরিবর্তন বা ম্যাপ করার জন্য ব্যবহৃত হয়।
সার্বিক উপসংহার
Collection Selection এবং Projection অপারেটরগুলি SpEL (Spring Expression Language) এর শক্তিশালী বৈশিষ্ট্য যা আপনাকে ডাটা ফিল্টার ও ম্যাপ করার ক্ষেত্রে সাহায্য করে। Collection Selection অপারেটর দিয়ে আপনি একটি কালেকশন থেকে নির্দিষ্ট শর্ত অনুসারে উপাদান নির্বাচন করতে পারেন, এবং Projection অপারেটর দিয়ে আপনি একটি কালেকশন থেকে নির্দিষ্ট মান বা প্রপার্টি বের করে নতুন ভ্যালু তৈরি করতে পারেন। এগুলি Spring কনফিগারেশন বা অন্যান্য জটিল ডেটা প্রসেসিংয়ের জন্য অত্যন্ত কার্যকর।
Read more