یک شرکت فراهمکننده سرویس اینترنت (ISP- Internet Service Provider) دو سال است که شروع به کار کرده و در این مدت برای جذب مشتری بیشتر، صرفا سرویس نامحدود اینترنت و با قیمت مناسب ارایه داده است. این شرکت در این دو سال، میزان و نحوه مصرف هر یک مشتریان خود را با دقت رصد کرده است و حالا که بازار را در دست گرفته و ارایه سرویس نامحدود دیگر برایش مقرون بهصرفه نیست، قصد دارد متناسب با نیازهای مشتریانش، تعدادی سرویس محدود تعریف کرده و به آنها پیشنهاد دهد.
اولین قدم برای این کار، دستهبندی کاربران بر اساس فاکتورهای مختلف است و شما هم به همین دلیل استخدام شدهاید.
فایل [Source](https://quera.ir/qbox/download/BAbfSm5usu/source.zip) را دانلود کرده و محتوای آن را ببینید. اطلاعات مربوط به میزان مصرف هر مشتری در تاریخهای مختلف در شیای از نوع `TrafficUsage` ذخیره شده است و توسط متد `loadAll` در کلاس `TrafficUsageDao` در قالب یک لیست در اختیار شما قرار میگیرد. هر رکورد از این لیست، دارای اطلاعات زیر است:
+ `user`: کاربر
+ `internal`: مشخص میکند که اینترنت مصرفی داخلی بوده یا خارجی
+ `nightly`: مشخص میکند اینترنت مصرفی مربوط به حجم روزانه بوده یا شبانه
+ `date`: تاریخ مصرف حجم اینترنت
+ یک رشته با فرمت yy/MM/dd است (مانند 97/08/25).
+ `usage`: میزان مصرف اینترنت بر حسب مگابایت
در کلاس `TrafficUsageService` قرار است به کمک این دادهها، اطلاعات زیر استخراج شده و در دستهبندی مشتریان مورد استفاده قرار بگیرد:
1. عاشقان رسانههای اجتماعی (**متد socialMediaLovers**):
+ مشتریانی که در طول ماه مورد نظر از سال مورد نظر، مجموع مصرف آنها از اینترنت **خارجی**، از مصرف اینترنت **خارجی** حداقل 90% سایر کاربران فعال در آن ماه بیشتر باشد.
+ مثلا اگر علی در تیر 97 به میزان 50 گیگ اینترنت خارجی مصرف کرده اما حداقل 90% سایر کاربران، هر کدام در تیر 97 مصرفشان از اینترنت خارجی کمتر از 50 گیگ بوده، علی از عاشقان رسانههای اجتماعی در تیر 97 بوده است.
+ منظور از کاربر فعال در یک بازه زمانی خاص، کاربری است که حداقل یک رکورد `TrafficUsage` در آن ماه و به نام آن کاربر ثبت شده باشد.
2. مشتریان عشق دانلود (**متد downloadLovers**):
+ مشتریانی که در طول ماه مورد نظر از سال مورد نظر، مجموع مصرف آنها از اینترنت شبانه، بیش از مجموع مصرف آنها از اینترنت روزانه باشد.
\**نکته**:
+ در هر یک از دو سرویس مورد نظر، به هر دلیلی اگر کاربری پیدا نشود، باید یک لیست خالی برگردانده شود (خروجی متد `null` نباشد).
با اجرای متد `main` در کلاس `Main`، خروجی زیر مورد انتظار است:
```
socialMediaLovers:
a100
downloadLovers:
a100
a101
a102
```
# آنچه باید آپلود کنید:
یک فایل زیپ شامل بستهی com.rahnema.isp.service.impl است. به صورتی که وقتی فایل زیپ را باز میکنیم، دقیقا شاخهی com را ببینیم که درون آن شاخهی rahnema و درون آن شاخهی isp و درون آن شاخه service و درون آن شاخه impl قرار دارد. در داخل شاخهی impl فقط و فقط فایل TrafficUsageServiceImpl.java وجود دارد.
پروژهای - رصد مشتریان - جاوا